日期函数

作者: 金沙澳门官网  发布:2019-12-08

MYSQL底蕴03(日期函数卡塔尔(قطر‎

 

办事中对日期的拍卖是常事碰到的,须要只怕二种多样,由此根本介绍。

 

1.拿走当今天期

 

 

select NOW()

-- 结果:2015-10-28 22:41:11

select NOW(),SLEEP(3),NOW()

-- 结果 2015-10-28 22:43:34  0  2015-10-28 22:43:34

 

SELECT SYSDATE(),SLEEP(3),SYSDATE()

-- 结果 2015-10-28 22:46:48  0  2015-10-28 22:46:52

-- NOW(卡塔尔国是sql试行前就拿到,而SYSDATE(卡塔尔(英语:State of Qatar)是该函数施行时才得到,平时的话NOW(卡塔尔已经够用,所以更常用

 

2.日期格式化

 

DATE_FORMAT(date,format卡塔尔国  注: 该函数重返的是字符串类型

 根据format字符串格式化date值

 (在format字符串中可用标记符:

 %M 月名字(January……December) 

 %W 星期名字(Sunday……Saturday卡塔尔(英语:State of Qatar) 

 %D 有希腊语前缀的月度的日期(1st, 2nd, 3rd, 等等。) 

 %Y 年, 数字, 4 位 

 %y 年, 数字, 2 位 

 %a 缩写的礼拜名字(Sun……Sat卡塔尔(قطر‎ 

 %d 月份中的天数, 数字(00……31卡塔尔国 

 %e 月份中的天数, 数字(0……31卡塔尔(英语:State of Qatar) 

 %m 月, 数字(01……12) 

 %c 月, 数字(1……12) 

 %b 缩写的月份名字(Jan……Dec卡塔尔(英语:State of Qatar) 

 %j 一年中的天数(001……366卡塔尔国 

 %H 小时(00……23) 

 %k 小时(0……23) 

 %h 小时(01……12) 

 %I 小时(01……12) 

 %l 小时(1……12) 

 %i 分钟, 数字(00……59) 

 %r 时间,12 小时(hh:mm:ss [AP]M) 

 %T 时间,24 小时(hh:mm:ss) 

 %S 秒(00……59) 

 %s 秒(00……59) 

 %p AM或PM 

 %w 八个星期中的天数(0=Sunday ……6=Saturday ) 

 %U 星期(0……52卡塔尔(قطر‎, 这里星期六是星期的第一天 

 %u 星期(0……52卡塔尔国, 这里周一是星期的率后天 

 %% 字符% )

 

-- 办事处方的参数,大家能够收获五花八门的日期格式,比mssql的convert函数强盛太多了,以下是常用的正式日期格式

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') -- 2015-10-28

SELECT DATE_FORMAT(NOW(),'%y-%m-%d') -- 15-10-28

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%m:%s') -- 2015-10-28 22:10:56

3.日期截取

 

 

-- 获取日期当天是星期几(1=周日,2=礼拜豆蔻梢头....7=星期天卡塔尔国

SELECT DAYOFWEEK(now()) 

-- 获取日期当天是几号 

SELECT DAYOFMONTH('2015-10-28')  -- 结果28

-- 获取日期当天是一年中的第几天

SELECT DAYOFYEAR('2015-10-28')  -- 结果 301

 

-- 获取日期的年份

SELECT YEAR('2015-10-28') -- 结果 2015

-- 获取日期第几季度

SELECT QUARTER('2015-10-28')  -- 结果 4

-- 获取日期的月份

SELECT MONTH('2015-10-28') -- 结果 10

-- 获取日期是第几周

SELECT WEEK('二〇一五-10-28'卡塔尔国  -- 结果43 (暗中认可礼拜六为一周的率先天卡塔尔(英语:State of Qatar)

SELECT WEEK('二零一四-10-28',0卡塔尔  -- 结果43 (礼拜日为七日的首后天卡塔尔(英语:State of Qatar)

SELECT WEEK('二零一五-10-28',1卡塔尔国  -- 结果44 (周三为18日的第一天卡塔尔(قطر‎

-- 获取日期的钟点

SELECT HOUR('2015-10-28 23:11:56') -- 结果 23

-- 获取日期的秒钟

SELECT MINUTE('2015-10-28 23:11:56') -- 结果 11

-- 获取日期的分钟

SELECT SECOND('2015-10-28 23:11:56') -- 结果 56

-- 获取日期部分

SELECT DATE('2015-10-28 23:11:56') -- 结果'2015-10-28'

-- 拿到时间有些

SELECT TIME('2015-10-28 23:11:56') -- 结果'23:11:56'

 

4.日子运算

 

DATE_ADD(date,INTERVAL expr type) 

 

[type值 含义 期望的expr格式]:

 SECOND 秒 SECONDS 

 MINUTE 分钟 MINUTES 

 HOUR 时间 HOURS 

 DAY 天 DAYS 

 MONTH 月 MONTHS 

 YEAR 年 YEARS 

 MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS" 

 HOUR_MINUTE 小时和分钟 "HOU智跑S:MINUTES" 

 DAY_HOU奔驰M级 天和时辰 "DAYS HOUCRUISERS" 

 YEAR_MONTH 年和月 "YEARS-MONTHS" 

 HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS" 

 DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES" 

 DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"

 expr中允许别的标点做分隔符,若是具备是DATE值时结果是叁个DATE值,不然结果是三个DATETIME值卡塔尔

 倘使type关键词不完全,则MySQL从右端取值,DAY_SECOND因为贫乏时辰秒钟等于MINUTE_SECOND)

 倘诺扩充MONTH、YEA奥迪Q5_MONTH或YEAMurano,天数大于结果月份的最大天数则使用最命宫气卡塔尔(英语:State of Qatar) 

 

 

-- 说明 正号为加法,负号为减法

-- 增加4天

SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL 4 DAY ) --2015-11-01 23:11:56

-- 减少3天

SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL -3 DAY ) -- 2015-10-25 23:11:56

-- 增加1年

SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL 1 YEAR ) -- 

2016-10-28 23:11:56

-- 增加1天3小时

SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL '1 3' DAY_HOUR ) -- 2015-10-27 20:11:56

-- 减1天1小时1分1秒

SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL '-1 1:1:1' DAY_SECOND) -- 2015-10-27 22:10:55

 

5.日期相比较

 

-- 总计2个日子区间的运气

SELECT DATEDIFF('2015-10-28','2015-10-26')  -- 结果2

-- 总计2个日子区间的时分秒

SELECT TIMEDIFF('2015-10-28 23:11:56','2015-10-28 20:11:56') -- 结果 03:00:00

6.日子转化

 

 

-- 将日期转变为命局 (西元0年于今多少天卡塔尔(英语:State of Qatar)

SELECT TO_DAYS('2015-10-28 23:11:56') -- 结果 736264

SELECT TO_DAYS('0000-00-00 00:00:00') -- 结果 0

-- 将日期转变为秒数 (从'1966-01-01 00:00:00'奇霉素T先导的秒数卡塔尔

select UNIX_TIMESTAMP('2015-10-28 23:11:56') -- 结果 1446045116

 

-- 将时刻转发为秒数

SELECT TIME_TO_SEC('01:00:05'); -- 结果 3605

-- 将秒数转变为日期

SELECT SEC_TO_TIME(3605); -- '01:00:05'

 

如上 ,参照他事他说加以考察资料:

 

瞩目难题

 

  1. DATE_FORMAT

 

-- 错误示例

SELECT * FROM mytable WHERE create_date>=DATE_FORMAT(NOW(),'%Y-%m-%d')

-- 说明: DATE_FORMAT重临的是字符串,所以不能够直接与日期字段相比较,那么些主题素材自身专门的学问中早就遭遇过了

 

-- 解决办法 使用DATE,重临日期类型

SELECT * FROM mytable WHERE create_date>=DATE(NOW());

 

作用完成

 

-- 依据日期获取前些日子中与前一个月末

SET @DATE_B:=DATE(DATE_FORMAT('2015-10-28','%Y-%m-1'));

SET @DATE_E:=DATE_ADD(DATE_ADD(@DATE_B,INTERVAL 1 MONTH),INTERVAL -1 DAY);

SELECT @DATE_B,@DATE_E

卡塔尔国专门的学问中对日期的拍卖是陆续遇上的,要求只怕各个种种,由此首要介绍。 1.拿到当今天子 select NOW(卡塔尔(قطر‎ -- 结果:2016-10-28 22:4...

做事中对日期的管理是平时蒙受的,要求恐怕多样各样,因而入眼介绍。

1.赢得超过天期

select NOW()
-- 结果:2015-10-28 22:41:11
select NOW(),SLEEP(3),NOW()
-- 结果 2015-10-28 22:43:34  0  2015-10-28 22:43:34

SELECT SYSDATE(),SLEEP(3),SYSDATE()
-- 结果 2015-10-28 22:46:48  0  2015-10-28 22:46:52
-- NOW()是sql执行前就得到,而SYSDATE()是该函数执行时才得到,一般来说NOW()已经足够,所以更常用

2.日期格式化

DATE_FORMAT(date,format卡塔尔国  注: 该函数再次来到的是字符串类型
 遵照format字符串格式化date值
 (在format字符串中可用标识符:
 %M 月名字(January……December) 
 %W 星期名字(Sunday……Saturday卡塔尔 
 %D 有匈牙利(Magyarország卡塔尔(英语:State of Qatar)语前缀的月度的日子(1st, 2nd, 3rd, 等等。) 
 %Y 年, 数字, 4 位 
 %y 年, 数字, 2 位 
 %a 缩写的星期名字(Sun……Sat卡塔尔 
 %d 月份中的天数, 数字(00……31卡塔尔 
 %e 月份中的天数, 数字(0……31卡塔尔(英语:State of Qatar) 
 %m 月, 数字(01……12) 
 %c 月, 数字(1……12) 
 %b 缩写的月度名字(Jan……Dec卡塔尔(قطر‎ 
 %j 一年中的天数(001……366卡塔尔国 
 %H 小时(00……23) 
 %k 小时(0……23) 
 %h 小时(01……12) 
 %I 小时(01……12) 
 %l 小时(1……12) 
 %i 分钟, 数字(00……59) 
 %r 时间,12 小时(hh:mm:ss [AP]M) 
 %T 时间,24 小时(hh:mm:ss) 
 %S 秒(00……59) 
 %s 秒(00……59) 
 %p AM或PM 
 %w 多少个礼拜中的天数(0=Sunday ……6=Saturday ) 
 %U 星期(0……52卡塔尔(قطر‎, 这里周天是星期的率后天 
 %u 星期(0……52卡塔尔国, 这里星期二是星期的第一天 
 %% 字符% )

-- 根据上面的参数,我们可以得到各种各样的日期格式,比mssql的convert函数强大太多了,以下是常用的标准日期格式
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') -- 2015-10-28
SELECT DATE_FORMAT(NOW(),'%y-%m-%d') -- 15-10-28
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s') -- 2015-10-28 22:10:56

3.日期截取

-- 获取日期当天是星期几(1=星期天,2=星期一....7=星期六)
SELECT DAYOFWEEK(now()) 
-- 获取日期当天是几号 
SELECT DAYOFMONTH('2015-10-28')  -- 结果28
-- 获取日期当天是一年中的第几天
SELECT DAYOFYEAR('2015-10-28')  -- 结果 301

-- 获取日期的年份
SELECT YEAR('2015-10-28') -- 结果 2015
-- 获取日期第几季度
SELECT QUARTER('2015-10-28')  -- 结果 4
-- 获取日期的月份
SELECT MONTH('2015-10-28') -- 结果 10
-- 获取日期是第几周
SELECT WEEK('2015-10-28')  -- 结果43 (默认星期天为一周的第一天)
SELECT WEEK('2015-10-28',0)  -- 结果43 (星期天为一周的第一天)
SELECT WEEK('2015-10-28',1)  -- 结果44 (星期一为一周的第一天)
-- 获取日期的小时
SELECT HOUR('2015-10-28 23:11:56') -- 结果 23
-- 获取日期的分钟
SELECT MINUTE('2015-10-28 23:11:56') -- 结果 11
-- 获取日期的秒钟
SELECT SECOND('2015-10-28 23:11:56') -- 结果 56
-- 获取日期部分
SELECT DATE('2015-10-28 23:11:56') -- 结果'2015-10-28'
-- 获取时间部分
SELECT TIME('2015-10-28 23:11:56') -- 结果'23:11:56'

4.日子运算

DATE_ADD(date,INTERVAL expr type) 

[type值 含义 期望的expr格式]:
 SECOND 秒 SECONDS 
 MINUTE 分钟 MINUTES 
 HOUR 时间 HOURS 
 DAY 天 DAYS 
 MONTH 月 MONTHS 
 YEAR 年 YEARS 
 MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS" 
 HOUR_MINUTE 小时和分钟 "HOURubiconS:MINUTES" 
 DAY_HOU奥迪Q5 天和小时 "DAYS HOULANDS" 
 YEAR_MONTH 年和月 "YEARS-MONTHS" 
 HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS" 
 DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES" 
 DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"
 expr中允许其余标点做分隔符,假设具备是DATE值时结果是三个DATE值,不然结果是三个DATETIME值卡塔尔(英语:State of Qatar)
 假使type关键词不完全,则MySQL从右端取值,DAY_SECOND因为贫乏刻钟分钟等于MINUTE_SECOND)
 若是增添MONTH、YEAWrangler_MONTH或YEA奥迪Q3,天数大于结果月份的最大天数则使用最小运气卡塔尔 

-- 说明 正号为加法,负号为减法
-- 增加4天
SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL 4 DAY ) --2015-11-01 23:11:56
-- 减少3天
SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL -3 DAY ) -- 2015-10-25 23:11:56
-- 增加1年
SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL 1 YEAR ) -- 
2016-10-28 23:11:56
-- 增加1天3小时
SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL '1 3' DAY_HOUR ) -- 2015-10-27 20:11:56
-- 减1天1小时1分1秒
SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL '-1 1:1:1' DAY_SECOND) -- 2015-10-27 22:10:55

5.日期可比

-- 计算2个日期间隔的天数
SELECT DATEDIFF('2015-10-28','2015-10-26')  -- 结果2
-- 计算2个日期间隔的时分秒
SELECT TIMEDIFF('2015-10-28 23:11:56','2015-10-28 20:11:56') -- 结果 03:00:00

6.日子转变

-- 将日期转化为天数 (西元0年至今多少天)
SELECT TO_DAYS('2015-10-28 23:11:56') -- 结果 736264
SELECT TO_DAYS('0000-00-00 00:00:00') -- 结果 0
-- 将日期转化为秒数 (从'1970-01-01 00:00:00'GMT开始的秒数)
select UNIX_TIMESTAMP('2015-10-28 23:11:56') -- 结果 1446045116

-- 将时间转化为秒数
SELECT TIME_TO_SEC('01:00:05'); -- 结果 3605
-- 将秒数转化为日期
SELECT SEC_TO_TIME(3605); -- '01:00:05'

如上 ,参谋资料:

留心问题

  1. DATE_FORMAT

    -- 错误示例 SELECT * FROM mytable WHERE create_date>=DATE_FORMAT(NOW(),'%Y-%m-%d') -- 说明: DATE_FORMAT再次回到的是字符串,所以不能够直接与日期字段相比较,这些主题素材本身专门的事业中早已境遇过了

    -- 解决办法 使用DATE,再次来到日期类型 SELECT * FROM mytable WHERE create_date>=DATE(NOW());

意义达成

-- 根据日期获取当月初与当月末
SET @DATE_B:=DATE(DATE_FORMAT('2015-10-28','%Y-%m-1'));
SET @DATE_E:=DATE_ADD(DATE_ADD(@DATE_B,INTERVAL 1 MONTH),INTERVAL -1 DAY);
SELECT @DATE_B,@DATE_E

 

本文由金沙澳门官网送注册58发布于金沙澳门官网,转载请注明出处:日期函数

关键词: