MySQL日期函数

MySQL日期函数

  • 1、DATE()
  • 2、TIME()
  • 3、TIMESTAMP()
  • 4、NOW()、CURRENT_TIMESTAMP、CURRENT_TIMESTAMP()、SYSDATE()
  • 5、STR_TO_DATE()
  • 6、DATE_FORMAT()
  • 7、UNIX_TIMESTAMP()
  • 8、FROM_UNIXTIME()
  • 9、DATEDIFF
  • 10、EXTRACT
  • 11、其他日期函数
  • 12、日期格式
  • 时间间隔

1、DATE()

返回 日期。格式:YYYY-MM-DD

SELECT DATE(NOW());
> 2022-04-04

2、TIME()

返回 日期。格式:HH-mm-ss

SELECT TIME(NOW());
> 16:25:09

3、TIMESTAMP()

返回 日期时间。格式:YYYY-MM-DD HH-mm-ss

SELECT TIMESTAMP(NOW());
> 2022-04-04 16:31:12

4、NOW()、CURRENT_TIMESTAMP、CURRENT_TIMESTAMP()、SYSDATE()

select NOW(),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP();
> 2022-04-04 16:40:03	2022-04-04 16:40:03	2022-04-04 16:40:03

这里需要注意前三者都是**返回语句执行开始执行的时间,后者SYSDATE()不同返回的是这个函数执行时候的时间**

select SLEEP(1),NOW(),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP(),SYSDATE();
> 0 2022-04-04 16:42:22	2022-04-04 16:42:22	2022-04-04 16:42:22	2022-04-04 16:42:23

这里可以看到我们利用sleep(1),让sql延时了一秒得到前三者与seelp(1)的区别SYSDATE()明显比NOW()这些多一秒,所以我们可以知道 预期结果是延时前后now()函数对应的时间不变,sysdate()的时间等于之前的时间加上延时时间

5、STR_TO_DATE()

根据指定的格式,将字符串转交成对应的日期或日期类型

1SELECT STR_TO_DATE('2022-04-04 22:50:17','%Y-%m-%d');
> 2022-04-04
没有时分秒时这里就忽略显示了

例2SELECT STR_TO_DATE('2022-04-04 22:50:17','%Y-%m-%d %H');
> 2022-04-04 22:00:00

6、DATE_FORMAT()

将日期根据指定的格式返回为对应的字符串
更多日期格式

1SELECT DATE_FORMAT('2022-04-04 22:50:17','%Y-%m-%d');
> 2022-04-042SELECT DATE_FORMAT('2022-04-04 22:50:17','%Y-%m-%d %H');
> 2022-04-04 22

7、UNIX_TIMESTAMP()

获取日期的时间戳(10位)

SELECT unix_timestamp(now());
> 1649083817

8、FROM_UNIXTIME()

根据时间戳(10位)返回日期

1SELECT FROM_UNIXTIME(1649087115)
> 2022-04-04 23:45:152、加上第二个参数 格式化
SELECT FROM_UNIXTIME(1649087115,'%Y-%m-%s')
> 2022-04-15

9、DATEDIFF

用法:DATEDIFF(expr1,expr2)
计算expr1expr2的天数

# 只计算日期部分1select NOW(),DATEDIFF(NOW(),'2023-01-13 11');
>  2023-01-11 15:53:33	-22select NOW(),DATEDIFF(NOW(),'2023-01-09');
> 2023-01-11 15:55:53	2

10、EXTRACT

用法:EXTRACT (unit FROM date) 提取对应日期单位(与时间间隔相同)的值

1select NOW(),EXTRACT(YEAR_MONTH from NOW())
> 2023-01-11 16:31:26	  2023012select NOW(),EXTRACT(MINUTE_MICROSECOND from NOW())
> 2023-01-11 16:31:44	  3144000000

11、其他日期函数

函数名 描述 样例 结果
NOW() 获取当前日期 格式’yyyy-MM-dd HH:mm:ss’ select NOW(); 2022-04-04 22:50:17
CURDATE() 获取当前日期 格式’yyyy-MM-dd’ select CURDATE(); 2022-04-04
CURTIME() 获取当前日期 格式’HH:mm:ss’ select CURTIME(); 22:50:17
CURRENT_TIMESTAMP() 获取当前日期 格式’yyyy-MM-dd HH:mm:ss’ select CURRENT_TIMESTAMP(); 2022-04-04 22:50:17
CURRENT_DATE() 获取当前日期 格式’yyyy-MM-dd’ select CURRENT_DATE(); 2022-04-04
CURRENT_TIME() 获取当前日期 格式’HH:mm:ss’ select CURRENT_TIME(); 22:50:17
CURRENT_TIMESTAMP 获取当前日期 格式’yyyy-MM-dd HH:mm:ss’ select CURRENT_TIMESTAMP; 2022-04-04 22:50:17
CURRENT_DATE 获取当前日期 格式’yyyy-MM-dd’ select CURRENT_DATE; 2022-04-04
CURRENT_TIME 获取当前日期 格式’HH:mm:ss’ select CURRENT_TIME; 22:50:17
SYSDATE() 获取这个函数的执行时间 格式’yyyy-MM-dd HH:mm:ss’ select SYSDATE; 2022-04-04 22:50:17
YEAR() 获取年份 select YEAR(NOW()) ; 2022
MONTH() 获取月份 select MONTH(NOW()) 4
DAYOFMONTH() 获取在月份中所在的天数 select DAYOFMONTH(NOW()) 4
DAYOFYEAR() 获取在年中所在的天数 select DAYOFYEAR(NOW()) 94
WEEKDAY() 获取日期是星期几 (0-代表星期一、1-代表星期二) select WEEKDAY(NOW()); 0
DAYOFWEEK() 获取日期是星期几 (1-代表星期天、2-代表星期一) select DAYOFWEEK(NOW()); 2
WEEKOFYEAR() 获取日期是年中的第几周 select WEEKOFYEAR(NOW()); 14
TO_DAYS() 获取从0000-00-00到日期的天数 SELECT TO_DAYS(NOW()); 738614
HOUR() 获取小时 SELECT HOUR(NOW()); 22
MINUTE() 获取分钟 SELECT MINUTE(NOW()); 50
SECOND() 获取秒 SELECT SECOND(NOW()); 17

12、日期格式

格式 描述
%Y 年,4 位
%y 年,2 位
%M 月 英文表示 January
%b 月 英文缩写表示 Apr
%m 月,数值(00-12)
%c 月,数值(0-12)
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%j 年的天 (001-366)
%H 小时 (00-23)
%I 小时 (01-12) 0时代表12 1时代表1
%k 小时 (0-23)
%i 分钟,数值(00-59)
%S 秒(00-59)
%s 秒(00-59)
%f 微秒
%T 时间, 24-小时 (hh:mm:ss)
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%p AM 或 PM
%a 星期名缩写 例如Mon
%W 星期名 例如Monday
%w 周的天 (0=星期日, 6=星期六)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用

时间间隔

时间间隔用于某些函数,例如 DATE_ADD()DATE_SUB()

*unit*价值 预期*expr*格式 描述
MICROSECOND MICROSECONDS 微秒
SECOND SECONDS
MINUTE MINUTES 分钟
HOUR HOURS 小时
DAY DAYS
WEEK WEEKS 星期
MONTH MONTHS
QUARTER QUARTERS 季度
YEAR YEARS
SECOND_MICROSECOND 'SECONDS.MICROSECONDS' 秒.微秒
MINUTE_MICROSECOND 'MINUTES:SECONDS.MICROSECONDS' 分钟:秒.微秒
MINUTE_SECOND 'MINUTES:SECONDS' 分钟:秒
HOUR_MICROSECOND 'HOURS:MINUTES:SECONDS.MICROSECONDS' 小时:分钟:秒.微秒
HOUR_SECOND 'HOURS:MINUTES:SECONDS' 小时:分钟:秒
HOUR_MINUTE 'HOURS:MINUTES' 小时:分钟
DAY_MICROSECOND 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' 天 小时:分钟:秒.微秒
DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS' 天 小时:分钟:秒
DAY_MINUTE 'DAYS HOURS:MINUTES' 天 小时:分钟
DAY_HOUR 'DAYS HOURS' 天 小时
YEAR_MONTH 'YEARS-MONTHS' 年-月

你可能感兴趣的:(SQL,mysql,数据库)