mysql之重用查询

时间:2022-06-11 03:07:05

其他常用查询 https://www.cnblogs.com/luxd/p/9916677.html

1、查询当前时间  年月日时分秒

mysql之重用查询
mysql> select now();
 --------------------- 
| now()               |
 --------------------- 
| 2018-03-19 23:12:52 |
 --------------------- 
mysql之重用查询

2、查询当前时间 前三小时 的时间点

mysql之重用查询
mysql> select subdate(now(),interval 3 hour);
 -------------------------------- 
| subdate(now(),interval 3 hour) |
 -------------------------------- 
| 2018-03-19 20:13:11            |
 -------------------------------- 
mysql之重用查询

3、查询当前时间  前三天 的时间点

mysql之重用查询
mysql> select subdate(now(),interval 3 day);
 ------------------------------- 
| subdate(now(),interval 3 day) |
 ------------------------------- 
| 2018-03-16 23:13:23           |
 ------------------------------- 
mysql之重用查询

4、查新当前时间 前三分钟 的时间点

mysql之重用查询
mysql> select subdate(now(),interval 3 minute);
 ---------------------------------- 
| subdate(now(),interval 3 minute) |
 ---------------------------------- 
| 2018-03-19 23:10:32              |
 ---------------------------------- 
mysql之重用查询

5、查询当前时间  时分秒

mysql之重用查询
mysql> select current_time();
 ---------------- 
| current_time() |
 ---------------- 
| 23:14:09       |
 ---------------- 
mysql之重用查询

6、查询当前时间  年月日时分秒

mysql之重用查询
mysql> select current_date();
 ---------------- 
| current_date() |
 ---------------- 
| 2018-03-19     |
 ---------------- 
mysql之重用查询

 7、获取本月最后一天

mysql之重用查询
mysql> select last_day(curdate());
 --------------------- 
| last_day(curdate()) |
 --------------------- 
| 2018-03-31          |
 --------------------- 
mysql之重用查询

8、获取本月第一天

mysql之重用查询
mysql> select date_add(curdate(), interval - day(curdate())   1 day);
 -------------------------------------------------------- 
| date_add(curdate(), interval - day(curdate())   1 day) |
 -------------------------------------------------------- 
| 2018-03-01                                             |
 -------------------------------------------------------- 
mysql之重用查询

9、获取下个月第一天

mysql之重用查询
mysql> select date_add(curdate() - day(curdate())   1, interval 1 month);
 ------------------------------------------------------------ 
| date_add(curdate() - day(curdate())   1, interval 1 month) |
 ------------------------------------------------------------ 
| 2018-04-01                                                 |
 ------------------------------------------------------------ 
mysql之重用查询

10、获取本月天数

mysql之重用查询
mysql> select day(last_day(curdate()));
 -------------------------- 
| day(last_day(curdate())) |
 -------------------------- 
|                       31 |
 -------------------------- 
mysql之重用查询

11-1、获取一个月前的今天【2018年的2月只有28天】

mysql之重用查询
mysql> select date_sub(curdate(), interval 1 month);
 --------------------------------------- 
| date_sub(curdate(), interval 1 month) |
 --------------------------------------- 
| 2018-02-28                            |
 --------------------------------------- 
mysql之重用查询

11-1、获取两个月前的今天

mysql之重用查询
mysql> select date_sub(curdate(), interval 2 month);
 --------------------------------------- 
| date_sub(curdate(), interval 2 month) |
 --------------------------------------- 
| 2018-01-29                            |
 --------------------------------------- 
mysql之重用查询

12、获取当前时间【当前月的第几天】

mysql之重用查询
mysql> select datediff(curdate(), date_sub(curdate(), interval 1 month));
 ------------------------------------------------------------ 
| datediff(curdate(), date_sub(curdate(), interval 1 month)) |
 ------------------------------------------------------------ 
|                                                         29 |
 ------------------------------------------------------------ 
mysql之重用查询

 13、以时间为条件查询数据时(例如查询某个月内或者固定时间段内的数据)

mysql之重用查询
/*
           需要的依赖:
         <!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.9.9</version>
        </dependency>
         */
        //关于数据库查询数据以时间为条件的查询时
        /*
            思路:将 将时间格式的字符串转换为DateTime类型的时间,
            然后可以实现在该时间基础上  plus增加day  month  week  year等等;
            然后将增加固定时间后得到的DateTime类型的时间转换为字符串
            在sql语句中进行拼接
         */
        StringBuffer timeStr = new StringBuffer("2017-01");
        timeStr.append("-01 00:00:01");
        org.joda.time.format.DateTimeFormatter format = org.joda.time.format.DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
        //时间解析
        org.joda.time.DateTime startDate = DateTime.parse(timeStr.toString(), format);
        DateTime endDate = startDate.plusMonths(1);//在start表示的时间点基础上增加一个月

        String start = startDate.toString("yyyy-MM-dd HH:mm:ss");
        String end = endDate.toString("yyyy-MM-dd HH:mm:ss");
        System.out.println(start);
        System.out.println(end);
        // 单引号一定不能省略
        StringBuffer sql = new StringBuffer("select * from user where create_time >");
        sql.append( start).append("").append(" and create_time < ").append(end).append("");
        String sqlQuery = sql.toString();
        //总之就是如下" create_time < ‘2017-01-01 00;00:00‘" (这个是2017-01-01 00;00:00String类型的参数)