MySQL日期时间函数

NOW()、SYSDATE()、CURRENT_TIMESTAMP()

返回当前的日期和时间(以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式)

-- 2019-02-03 17:36:53
SELECT NOW()
-- 20190203173653.000000
SELECT CURRENT_TIMESTAMP() + 0

CURDATE()、CURRENT_DATE()

返回当前的日期(以'yyyy-mm-dd'或yyyymmdd格式)

-- 2019-02-03
SELECT CURDATE()
-- 2019-02-03
SELECT CURRENT_DATE()
-- 20190203
SELECT CURDATE() + 0

CURTIME()、CURRENT_TIME()

返回当前的时间(以'hh:mm:ss'或hhmmss格式)

-- 09:59:37
SELECT CURTIME()
-- 095937.000000
SELECT CURRENT_TIME() + 0

DATE()

返回日期或日期/时间表达式的日期部分

-- 2018-01-09
SELECT DATE('2018-01-09 09:45:45')
-- 2018-01-09
SELECT DATE('20180109')
-- NULL
SELECT DATE('123')

EXTRACT()

返回日期/时间的单独部分,比如年、月、日、小时、分钟等
语法:EXTRACT(unit FROM date)
其中unit值如下:
MICROSECOND、SECOND、MINUTE
HOUR、DAY、WEEK、MONTH、
QUARTER、YEAR、HOUR_MINUTE
DAY_MICROSECOND、DAY_SECOND
DAY_MINUTE、DAY_HOUR、YEAR_MONTH
SECOND_MICROSECOND、MINUTE_MICROSECOND MINUTE_SECOND、HOUR_MICROSECOND、HOUR_SECOND

SELECT EXTRACT(YEAR FROM NOW()) year,
       EXTRACT(MONTH FROM NOW()) month,
       EXTRACT(DAY FROM NOW()) day

DATE_ADD()、ADDDATE()

向日期添加指定的时间间隔,date参数是合法的日期表达式,expr参数是您希望添加的时间间隔(多个值以任意分隔符拼接)
语法:DATE_ADD(date,INTERVAL expr type)
type取值如下:
MICROSECOND、SECOND
MINUTE、HOUR
DAY、WEEK
MONTH、QUARTER
YEAR、SECOND_MICROSECOND
MINUTE_MICROSECOND、MINUTE_SECOND
HOUR_MICROSECOND、HOUR_SECOND
HOUR_MINUTE、DAY_MICROSECOND
DAY_SECOND、DAY_MINUTE
DAY_HOUR、YEAR_MONTH

-- 向指定字段添加两天
SELECT id,DATE_ADD(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders
-- 向指定字段减30分钟
SELECT closing_time,DATE_ADD(closing_time,INTERVAL -30 MINUTE) FROM work_shift_detail
-- 向指定时间加1分1秒(1:1 1-1都行)
SELECT DATE_ADD('2017-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND) result;
-- 综合示例:查询最晚打卡时间(下班打卡时间加上下班有效打卡时间)
SELECT DATE_ADD(closing_time, 
INTERVAL + IF(ISNULL(closing_valid_time),0,closing_valid_time) MINUTE) 
as lateClosingTime

DATE_SUB()、SUBDATE()

从日期减去指定的时间间隔,参数同date_add
语法:DATE_SUB(date,INTERVAL expr type)

-- 减去两天
SELECT DATE_SUB(OrderDate,INTERVAL 2 DAY)

DATEDIFF()

返回两个日期之间的天数,date1和date2参数是合法的日期或日期/时间表达式,只有值的日期部分参与计算
语法:DATEDIFF(date1,date2)

-- 1
SELECT DATEDIFF('2017-12-30','2017-12-29') AS DiffDate
-- 38
SELECT DATEDIFF('20171230','2017-11-22') AS DiffDate
-- 0
SELECT DATEDIFF('2008-12-30 19:20:54','2008-12-30 11:20:54') AS DiffDate

DATE_FORMAT()、STR_TO_DATE()

DATE_FORMAT(date,format),按指定格式对日期进行格式化操作
STR_TO_DATE(str,format),将指定格式字符串转换为日期

-- 2019-02-05
SELECT DATE_FORMAT(NOW(), "%Y-%m-%d")
-- 2019-02-05 16:19:03
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')

format取值如下:

TIME_FORMAT()

和date_format()类似,但time_format只处理小时、分钟和秒(其余符号产生一个null值或0)
语法:TIME_FORMAT(time,format)

-- 08 01
SELECT TIME_FORMAT('08:01:23','%h %i')
-- 08:01
SELECT TIME_FORMAT('2018-01-10 08:01:23','%h:%i')

UNIX_TIMESTAMP()

返回一个unix时间戳(从'1970-01-01 00:00:00'gmt开始的秒数,date默认值为当前时间)
语法:UNIX_TIMESTAMP()UNIX_TIMESTAMP(date)

-- 1516423434
SELECT UNIX_TIMESTAMP()
-- 1516423424
SELECT UNIX_TIMESTAMP('2018-01-20 12:43:44')

FROM_UNIXTIME()

默认以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回时间戳的值(根据返回值所处上下文是字符串或数字)
语法:FROM_UNIXTIME(unix_timestamp)FROM_UNIXTIME(unix_timestamp,format)

-- 2018-01-20 12:43:44
SELECT FROM_UNIXTIME(1516423424)
-- 18 01 20 12:51:55 2018
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%y %m %d %h:%i:%s %x')

TIME_TO_SEC()

返回time值有多少秒
语法:TIME_TO_SEC(time)

-- 80580
SELECT TIME_TO_SEC('22:23:00')

SEC_TO_TIME()

以'hh:mm:ss'或hhmmss格式返回秒数转成的time值(根据返回值所处上下文是字符串或数字)
语法:SEC_TO_TIME(seconds)

-- 22:23:00
SELECT SEC_TO_TIME(80580)
-- 222300.000000
SELECT SEC_TO_TIME(80580) + 0

DAYOFWEEK()

返回日期date是星期几(1=星期天,2=星期一,……7=星期六,odbc标准)
语法:DAYOFWEEK(date)

-- 结果:7
SELECT DAYOFWEEK('2018-01-20')

WEEKDAY()

返回日期date是星期几(0=星期一,1=星期二,……6=星期天)
语法:WEEKDAY(date)

-- 结果:5
SELECT WEEKDAY('2018-01-20 20:00:00')

DAYOFMONTH()

返回date是一月中的第几日(在1到31范围内)
语法:DAYOFMONTH(date)

-- 结果:20
SELECT DAYOFMONTH('2018-01-20')

DAYOFYEAR()

返回date是一年中的第几日(在1到366范围内)
语法:DAYOFYEAR(date)

-- 结果:51
SELECT DAYOFYEAR('2018-02-20')

MONTH()

返回date中的月份数值
语法:MONTH(date)

-- 结果:1
SELECT MONTH('2018-01-20')

DAYNAME()

返回date是星期几(按英文名返回)
语法:DAYNAME(date)

-- 结果:Saturday
SELECT DAYNAME('2018-01-20')

MONTHNAME()

返回date是几月(按英文名返回)
语法:MONTHNAME(date)

-- 结果:January
SELECT MONTHNAME('2018-01-20')

QUARTER()

返回date是一年的第几个季度
语法:QUARTER(date)

-- 结果:3
SELECT QUARTER('2018-08-20')

WEEK()

返回日期的星期数,mode默认值0,mode取值1表示周一是周的开始,0从周日开始
语法:WEEK(date[,mode])

-- 结果:2
SELECT WEEK('2018-01-20')
-- -- 结果:3
SELECT WEEK('2018-01-20',1)

YEAR()

返回date的年份(范围在1000到9999)
语法:YEAR(date)

-- 结果:2018
SELECT YEAR('2018-01-20')

HOUR()

返回time的小时数(范围是0到23)
语法:HOUR(time)

-- 结果:10
SELECT HOUR('10:05:03')

MINUTE()

返回time的分钟数(范围是0到59)
语法:MINUTE(time)

-- 结果:15
SELECT MINUTE('1998-02-03 10:15:03')

SECOND()

返回time的秒数(范围是0到59)
语法:YEAR(date)

-- 结果:30
SELECT SECOND('22:24:30')

PERIOD_ADD()

增加n个月到时期p并返回(p的格式yymm或yyyymm)
语法:PERIOD_ADD(P,N)

-- 结果:201809
SELECT PERIOD_ADD('201801',8)

SPERIOD_DIFF()

返回在时期p1和p2之间月数(p1和p2的格式yymm或yyyymm)
语法:PERIOD_DIFF(P1,P2)

-- 结果:11
SELECT PERIOD_DIFF(9802,199703)

TO_DAYS()

返回日期date是西元0年至今多少天(不计算1582年以前)
语法:TO_DAYS(date)

-- 结果:728779
SELECT TO_DAYS(950501)
-- 结果:737070
SELECT TO_DAYS('2018-01-11')

FROM_DAYS()

给出西元0年至今多少天返回date值(不计算1582年以前)
语法:FROM_DAYS(N)

-- 结果:2018-01-11
SELECT FROM_DAYS(737070)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容