内容简介
datetime类型和timestamp类型的取值范围,CURRENT_DATE()函数应用,NOW()函数应用,DATE_FROMAT()函数取星期,日期、字符串、时间戳相互转换等。
时间范围
datetime类型范围:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp类型范围:1970-01-01 08:00:01 ~ 2038-01-19 11:14:07
CURRENT_DATE()函数
#获取当前日期 SELECT CURRENT_DATE() AS newDate; #2019-05-20 #当前日期加1天(其他天数方法一样) SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY) AS newDate; #2019-05-21 #当前日期减1天 SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) AS newDate; #2019-05-19 #当前日期加1个月 SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH) AS newDate; #2019-06-20 #当前日期减1个月 SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -1 MONTH) AS newDate; #2019-04-20 #当前日期加1年 SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 1 YEAR) AS newDate; #2020-05-20 #当前日期减1年 SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -1 YEAR) AS newDate; #2018-05-20 #指定日期加1天(可将DAY换为MONTH,YEAR来实现加1个月,1年) SELECT DATE_ADD('2019-05-02', INTERVAL 1 DAY) AS newDate; #2019-05-03 #指定日期减1天(可将DAY换为MONTH,YEAR来实现减1个月,1年) SELECT DATE_ADD('2019-05-02', INTERVAL -1 DAY) AS newDate; #2019-05-01 #当前时间添加1小时10分钟10秒钟 SELECT DATE_ADD(NOW(), INTERVAL '1:10:10' HOUR_SECOND) AS newTime; #2019-05-20 15:59:32 #指定时间添加1小时10分钟10秒钟 SELECT DATE_ADD('2019-04-17 2:00:00', INTERVAL '1:10:10' HOUR_SECOND) AS newTime; #2019-04-17 03:10:10
NOW()函数
#获取当前时间 SELECT NOW() AS newTime; #2019-05-20 14:28:41 #当前时间减30秒 SELECT (NOW() - INTERVAL 30 SECOND) AS newTime; #2019-05-20 14:29:31 #当前时间加30秒 SELECT (NOW() + INTERVAL 30 SECOND) AS newTime; #2019-05-20 14:29:31 #当前时间减30分钟 SELECT (NOW() - INTERVAL 30 MINUTE) AS newTime; #2019-05-20 14:02:26 #当前时间加30分钟 SELECT (NOW() + INTERVAL 30 MINUTE) AS newTime; #2019-05-20 15:02:41 #当前时间减1天 SELECT (NOW() - INTERVAL 1 DAY) AS newTime; #2019-05-19 14:33:26 #当前时间加1天 SELECT (NOW() + INTERVAL 1 DAY) AS newTime; #2019-05-21 14:33:33 #当前时间减1个月 SELECT (NOW() - INTERVAL 1 MONTH) AS newTime; #2019-04-20 14:34:10 #当前时间加1个月 SELECT (NOW() + INTERVAL 1 MONTH) AS newTime; #2019-06-20 14:34:47 #当前时间减1年 SELECT (NOW() - INTERVAL 1 YEAR) AS newTime; #2018-05-20 14:35:09 #当前时间加1年 SELECT (NOW() + INTERVAL 1 MONTH) AS newTime; #2019-06-20 14:35:23 #指定时间的加减,将上面的NOW()函数换为指定日期时间即可,以加30分钟为例,如下: SELECT ('2019-01-02 12:30:00' + INTERVAL 30 MINUTE) AS newTime; #2019-01-02 13:00:00
日期取星期几
# 1:星期一 2:星期二 3:星期三 4:星期四 5:星期五 6:星期六 0:星期日 SELECT DATE_FORMAT('2019-05-20','%w') AS weekDay FROM DUAL; #1 # 2:星期一 3:星期二 4:星期三 5:星期四 6:星期五 7:星期六 1:星期日 SELECT DAYOFWEEK('2019-05-20') AS weekDay; #2 # 0:星期一 1:星期二 2:星期三 3:星期四 4:星期五 5:星期六 6:星期日 SELECT WEEKDAY('2019-05-20') AS weekDay; #0 #可将具体日期换为CURRENT_DATE()函数取当前日期,如下: SELECT DATE_FORMAT(CURRENT_DATE(),'%w') AS weekDay FROM DUAL; SELECT DAYOFWEEK(CURRENT_DATE()) AS weekDay; SELECT WEEKDAY(CURRENT_DATE()) AS weekDay;
类型转换
日期、字符串、时间戳互转转换请参考:MYSQL日期 字符串 时间戳互转