MySQL的日期时间

常用日期函数

DATE_FORMAT(date,format) 把日期进行格式化
其中 date 参数是合法的日期(不可为时间戳),format 参数则规定日期/时间的输出格式,可以使用的格式有:
在这里插入图片描述
FROM_UNIXTIME(unix_timestamp ,format) 把时间戳格式化成一个日期
eg : SELECT FROM_UNIXTIME(1234567890, ‘%Y-%m-%d %H:%i:%S’)
其中 unix_timestamp 参数为要转换的时间戳,format 参数则规定日期/时间的输出格式,他可以使用的格式和 DATE_FORMAT() 函数基本一致,这里不再列出。

UNIX_TIMESTAMP(date ) 函数将 MySQL 中存储为日期的数据转换成时间戳, 。它只有一个参数,date 为合法的日期

DATE(date) 函数返回日期或日期/时间表达式的日期部分(返回‘年-月-日’)。

EXTRACT() 函数
函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

若非,测试。否则绝对不能使用 中文 表示字段名,切记。
SELECT EXTRACT(YEAR FROM created_time) AS,
EXTRACT(MONTH FROM created_time) AS,
EXTRACT(DAY FROM created_time) ASFROM test
ORDER BY created_time DESC

在这里插入图片描述
也可以用year()=DAYOFYEAR() month() day()=dayofmonth() 函数更方便!
参考:添加链接描述

DAYOFWEEK(date)
返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。

mysql> select DAYOFWEEK('2019-03-26'); 
-> 3

WEEKDAY(date)
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

mysql> select WEEKDAY('2019-03-26 22:23:00'); 
-> 1
mysql> select WEEKDAY('2019-03-25'); 
-> 0

DAYNAME(date)
返回date的星期名字。

mysql> select DAYNAME("2019-03-26"); 
-> 'Thursday'

MONTHNAME(date)
返回date的月份名字。

mysql> select MONTHNAME("2019-03-26"); 
-> 'March'

QUARTER(date)
返回date一年中的季度,范围1到4。

mysql> select QUARTER('2019-03-26'); 
-> 1

TO_DAYS(date)
返回从0开始的天数

--取date_col的值在最后30天以内:
SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

参考:添加链接描述

差值计算

  • 计算天数差值,忽略时间部分
SELECT now(),DATEDIFF(now(),birthday) from stu;
  • 计算时间差值,忽略天数
SELECT now(),TIMEDIFF(time(birthday),time(now())) from stu;
  • 指定单位差值
    支持的单位有 YEAR/MONTH/WEEK/DAY/HOUR/MINUTE/SECOND等。下面是获取学生来到人生经历的天数。
select sname,TIMESTAMPDIFF(day,birthday,NOW()) from stu;

时间计算

函数 说明

  • ADDTIME 添加时间(负数为减少),只对时间有效
  • TIMESTAMP 添加时间(负数为减少),只对时间有效
  • DATE_ADD 根据单位添加时间,支持单位有YEAR/MONTH/DAY/HOUR/MINUTE/SECOND/HOUR_MINUTE/DAY_HOUR/DAY_MINUTE/DAY_SECOND/HOUR_MINUTE/HOUR_SECOND(负数时等于DATE_SUB)
  • DATE_SUB DATE_ADD的反函数
  • LAST_DAY 指定月最后一天日期
    七小时前的时间
select ADDTIME(now(),'-7:00:00')

七天后的日期

SELECT DATE_ADD(now(),INTERVAL 7 DAY);

20小时10分钟后的日期

SELECT DATE_ADD(NOW(),INTERVAL '20:10' HOUR_MINUTE);

2天8小时后的日期

SELECT DATE_ADD(NOW(),INTERVAL '2 8' DAY_HOUR);

获取本月最后一天日期

SELECT LAST_DAY(now());

获取本月的第一天日期

SELECT DATE_SUB(now(),INTERVAL DAYOFMONTH(now())-1 DAY);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值