SQL 日期时间函数

now(): 获取当前系统日期+时间(精确到秒);
curdate(): 获取当前系统日期( 精确到天);

SELECT NOW();
SELECT CURDATE();

year(date): 获取指定date的年份;
month(date): 获取指定date的月份 ;
day(date): 获取指定date的日;

SELECT DAY(NOW());
SELECT YEAR('2022-08-23')
SELECT MONTH(NOW())

dayofyear(date):获取指定日期是一年的第几天;
dayofmonth(date):获取指定日期是一个月的第几天;
dayofweek(date):获取指定日期是一周的第几天;

SELECT DAYOFYEAR(NOW());
SELECT DAYOFMONTH(NOW());
SELECT DAYOFWEEK(NOW());

date_add(date, interval expr type):获取指定日期/时间值加上一个时间间隔expr的时间值;
interval是固定标志,expr 表示数量,可以为正负,表示加减,type表示日期类型 ;

日期类型:
SECONDMINUTE  分钟
HOUR  	小时
DAY  	天
WEEK  	周
MONTH  	月份
QUARTER 季度
YEAR  	年份

示例:

// 获取当前时间增加1个小时的结果
select date_add(now(),interval 1 hour);

// 获取当前时间减去2个小时的结果
select date_add(now(),interval -2 hour);

// 获取当前时间增加1天的结果
select date_add(now(),interval 1 day);

datediff(date1,date2):获取起始时间date2和结束时间date1之间的天数(date1-date2);
注意:参数传递的是日期时间值,DATEDIFF函数仅将日期部分用于计算,并忽略时间部分(只有值的日期部分参与计算);

//结果:1
SELECT DATEDIFF('2022-09-13','2022-09-12');

//结果:1
SELECT DATEDIFF('2022-09-13 12:12:12','2022-09-12 20:12:00');

//结果:-5
SELECT DATEDIFF('2022-09-13','2022-09-18');

timestampdiff(unit,begin,end):求两个日期以时间戳的时间差(end-begin),unit参数是获取结果的日期类型;

// 92天
SELECT TIMESTAMPDIFF(DAY, '2022-06-01', '2022-09-01') result;

// -30天
SELECT TIMESTAMPDIFF(DAY, '2022-09-01 10:00:00', '2022-08-01 20:00:00') result;

// 22天
SELECT TIMESTAMPDIFF(DAY, '2022-09-01', NOW()) result;

str_to_date(str, format): 将时间格式的字符串(str)转换成按照显示格式(format)的datetime类型的值;
date_format(date, format): 将日期(date)转换为对应的字符串格式(format);

构建日期格式字符串的限定符:

%Y  	四位的年份
%y  	2位的年份
%m 		月份(01,02...11,12
%c  	月份(1,2,...11,12 )
%d  	日( 01,02,...31)
%e  	日(1,2,… 31)
%H  	小时(24小时制)
%h  	小时(12小时制)
%i   	分钟(00,01...59 ) 
%s  	秒(00,01,...59 )

常用字符串格式:
%Y/%m/%d :2022/01/01
%Y-%m-%d : 2022-01-01
%Y-%m-%d %T : 2022-01-01 18:40:00


SELECT STR_TO_DATE('2022-09-06 10:20:30','%Y-%m-%d %T') result1;

SELECT STR_TO_DATE('2022-09-06 10:20:30','%Y-%m-%d') result2;

SELECT STR_TO_DATE('2022/09/06 10:20:30','%Y/%m/%d %T') result;

--------------------------------------
// 2022/09/20
select date_format(now(), '%Y/%m/%d');

//2022-09-13
select date_format(now(), '%Y-%m-%d');

// 2022-09-21 16:02:37
select date_format(now(), '%Y-%m-%d %T');
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值