MySQL日期取值与转换

本文介绍了MySQL中处理日期和时间的各种函数,包括DATE()、TIME()、YEAR()、QUARTER()、MONTHNAME()、DAYNAME()、WEEK()等,涵盖了年份、季度、月份、星期、天数、小时、分钟、秒和微秒的提取和转换。此外,还提到了EXTRACT()函数、LAST_DAY()、MAKEDATE()、MAKETIME()、SEC_TO_TIME()、TIME_TO_SEC()、TIMESTAMP()、UNIX_TIMESTAMP()、UTC_DATE()、UTC_TIME()和UTC_TIMESTAMP()等高级用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-- DATE():获取日期或日期时间表达式的日期部分

SELECT DATE('2017-06-15'),DATE('2017-06-15 12:12:12'),DATE(now())

-- time() 获取日期或日期时间表达式的时间部分

SELECT time('2012-12-12 12:12:12'),time('12:12:12'),time(now())

-- --------------------------------------------------------------------------年份
-- YEAR(d) 返回年份

SELECT YEAR("2017-06-15"),YEAR(CURDATE())

-- --------------------------------------------------------------------------季度
-- QUARTER(d)  返回季度数字

SELECT QUARTER('2011-11-11 11:11:11'),QUARTER(CURDATE())

-- --------------------------------------------------------------------------月份
-- MONTHNAME(d)  返回英文月份名称

SELECT MONTHNAME('2011-11-11 11:11:11'),MONTHNAME(CURDATE())

-- MONTH(d)  返回月份数字

SELECT MONTH('2011-05-11 11:11:11'),MONTH(CURDATE())

-- --------------------------------------------------------------------------星期
-- DAYNAME(d) 返回英文的星期

SELECT DAYNAME('2011-11-11 11:11:11'),DAYNAME(CURDATE())

-- WEEK(d) 计算日期 d 是本年的第几个星期,范围是 0 到 53

SELECT WEEK('2011-1-1 11:11:11'),week(CURDATE())

-- WEEKDAY(d) 日期 d 是星期几,0 表示星期一,1 表示星期二

SELECT WEEKDAY('2017-06-15'),WEEKDAY(CURDATE())

-- WEEKOFYEAR(d) 返回日期(1-53)的日历周

SELECT WEEKOFYEAR('2011-1-1 11:11:11'),WEEKOFYEAR(CURDATE())

-- YEARWEEK(date, mode) 返回年份和星期,mode 中 0 表示周天,1表示周一,以此类推

SELECT YEARWEEK("2017-06-15"),YEARWEEK(CURDATE()),YEARWEEK(CURDATE(),6)

-- --------------------------------------------------------------------------天
-- DAYOFYEAR(d) 返回本年的第几天

SELECT DAYOFYEAR('2011-11-11 11:11:11'),DAYOFYEAR(CURDATE())

-- DAY(d)、DAYOFMONTH() 返回日期值 d 的日期部分

select DAY('2017-06-05'),DAYOFMONTH('2017-06-05'),DAY(now()),DAYOFMONTH(now())

-- DAYOFWEEK(d) 返回当周的第几天,注意1为周日,7为周六,周日为一周的开始

SELECT DAYOFWEEK('2011-11-11 11:11:11'),DAYOFWEEK(CURDATE())

-- --------------------------------------------------------------------------小时
-- HOUR()  返回小时值

select HOUR(now()),HOUR('14:28:25')

-- --------------------------------------------------------------------------分钟
-- MINUTE() 返回分钟数

SELECT MINUTE('1:2:03'),MINUTE(now())

-- --------------------------------------------------------------------------秒
-- SECOND()  返回秒数字

SELECT SECOND('1:2:3'),SECOND(now())

-- --------------------------------------------------------------------------微秒
-- MICROSECOND() 返回微妙数

SELECT MICROSECOND('2017-06-20 09:34:00.000023'),MICROSECOND(now()),MICROSECOND('09:34:00.000023')

-- --------------------------------------------------------------------------函数

-- EXTRACT(type FROM d) 从日期 d 中获取指定的值,type 指定返回的值。type可取值为:

MICROSECOND微妙
SECOND
MINUTE分钟
HOUR小时(24)
DAY
WEEK年周
MONTH月份
QUARTER季度
YEAR年份
SECOND_MICROSECOND秒-微妙
MINUTE_MICROSECOND分钟-秒-微妙
MINUTE_SECOND分钟-秒
HOUR_MICROSECOND小时(24)-分钟-秒-微妙
HOUR_SECOND小时(24)-分钟-秒
HOUR_MINUTE小时(24)-分钟
DAY_MICROSECOND小时(24)-分钟-秒-微妙
DAY_SECOND小时(24)-分钟-秒
DAY_MINUTE小时(24)-分钟
DAY_HOUR小时(24)
YEAR_MONTH年-月

 

 

LAST_DAY(d)  返回给给定日期的那一月份的最后一天

SELECT LAST_DAY("2017-06-20"),LAST_DAY(CURDATE()),LAST_DAY(now())

 

MAKEDATE(year, day-of-year)  基于给定参数年份 year 和所在年中的天数序号 day-of-year 返回一个日期

SELECT MAKEDATE(2017, 3);

 

MAKETIME(hour, minute, second)   组合时间,参数分别为小时、分钟、秒

SELECT MAKETIME(11, 35, 4);

 

SEC_TO_TIME(s)    将以秒为单位的时间 s 转换为时分秒的格式

SELECT SEC_TO_TIME(4320)

 

TIME_TO_SEC(t)    将时间 t 转换为秒    

SELECT TIME_TO_SEC('1:12:00')

 

TIMESTAMP(expression, interval)  单个参数时,函数返回日期或日期时间表达式;有2个参数时,将参数加和

SELECT TIMESTAMP('2017-07-23',  '13:10:11'),TIMESTAMP('2017:07:23'),TIMESTAMP(CURDATE())

 

-- --------------------------------------------------------------------------其他

-- UNIX_TIMESTAMP() 返回Unix时间戳
select UNIX_TIMESTAMP(now()-1),UNIX_TIMESTAMP()

-- UTC_DATE() 返回当前UTC日期
select UTC_DATE()

-- UTC_TIME() 返回当前UTC时间
select UTC_TIME()

-- UTC_TIMESTAMP() 返回当前UTC日期和时间
select UTC_TIMESTAMP()

-- FROM_UNIXTIME()   将Unix时间戳格式化为日期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值