1.NOW() 日期+时间
YYYY-MM-DD HH:MM:SS
2020-09-02 23:23:37
若对NOW()+1,会丢失格式输出
20200902232517
YYYYMMDDHHMMSS
NOW(6)指定小数秒的精度 ,最高6位
SELECT NOW(6)
2020-09-02 23:29:55.526219
now()函数的同义词有,括号中也可以填精确度: CURRENT_TIMESTAMP 、 CURRENT_TIMESTAMP()、 LOCALTIMESTAMP 、 LOCALTIMESTAMP()、 LOCALTIME 、 LOCALTIME() *SYSDATE( ):返回服务器的当前日期和时间常用NOW()
2.时间加减函数(常用用来判断时间区间)
DATE_ADD(date, INTERVAL expr unit); DATE_SUB(date, INTERVAL expr unit); 参数date是日期类型yyyy-MM-dd(或yyyyMMdd) interval是间隔类型关键字,照写 expr常是一个数字表示加几天 unit是时间间隔的单位
HOUR/MINUTE/SECOND/MICROSECOND
YEAR/MONTH/DAY/WEEK
QUARTER季
YEAR_MONTH年和月
DAY_HOUR日和小时
DAY_MINUTE日和分钟
DAY_ SECOND日和秒
HOUR_MINUTE小时和分
HOUR_SECOND小时和秒
MINUTE_SECOND分钟和秒
eg:减去一天一小时一分一秒
SELECT date_sub('2005-01-01 00:00:00',INTERVAL '1 1:1:1' DAY_SECOND)
2.CURTIME() 时间
CURTIME() 23:57:34 CURTIME(6) 23:58:34.497948
同义词有:CURRENT_TIME 、 CURRENT_TIME()
3.CURDATE() 日期yyyy-MM-dd
CURDATE() 2020-09-03
CURDATE()+1 丢失格式:20200904
注: 和Date('2020-03-03 03:03:03')不同
Date()需要接受一个参数,CURDATE()不能接受参数
通俗讲: CURDATE()用来生产一个日期, DATE()加工时间,转换时间格式
同义词有: CURRENT_DATE 、CURRENT_DATE()
4.TIMEDIFF(expr1, expr2)
expr1,expr1都需要为时间
select timediff('18:32:59','60000');
+------------------------------+
| timediff('18:32:59','60000') |
+------------------------------+
| 12:32:59 |
+------------------------------+
网上看到的例子,类型不一样可以得出结果,但时错误的,这样减的规则是:
59-00,32-00,18-6无任何意义,不能借位
5.DATEDIFF(expr1, expr2)
日期相减(expr1 − expr2 )相差的天数 经试验时间部分直接会被忽略掉
mysql> select datediff('2019-01-14 14:32:59','2019-01-02');
+-------------------------------------------+
| datediff('2019-01-14 14:32:59','2019-01-02') |
+-------------------------------------------+
| 12 |
+-------------------------------------------+
6.选取日期时间的各个部分
SELECT
DATE(NOW()) AS `date`, 2020-09-08
TIME(NOW()) AS `time`, 23:14:40
YEAR (NOW()) AS `year`, 2020
QUARTER (NOW()) AS `quarter`, 3
MONTH (NOW()) AS `month`, 9
WEEK (NOW()) AS `week`, 36(一年内)
DAY (NOW()) AS `day`, 8(一月内)
HOUR(NOW()) AS `hour`, 23(一天内)
MINUTE(NOW()) AS `minute`, 14
SECOND(NOW()) AS `second` 40
TO_DAYS(NOW())返回从0000-00-00到现在的天数不能用DAY(),可以用在条件如:昨天的销售订单
SELECT * FROM sale_order WHERE TO_DAYS(NOW()) - TO_DAYS(createTime) = 1
TO_SECONDS(NOW())返回从0000-00-00到现在的秒数
7.MySQL常用时间查询语句
date_format(date,’%Y-%m-%d’) ————–>oracle中的to_char();
str_to_date(date,’%Y-%m-%d’) ————–>oracle中的to_date();