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');

你可能感兴趣的:(MySQL,sql,数据库,sqlserver)