mysql 日期函数

mysql 的日期不不用转换的,日期可以直接和字符串比较:

 

select id,title,created_datetime from event_event where created_datetime between '2012-01-01' and '2012-05-20'

 

 

对日期时间进行加减法运算:

SUBDATE(now(),INTERVAL 5 MINUTE)

ADDDATE(now(),INTERVAL 5 MINUTE)

 

SELECT SUBDATE(now(),INTERVAL 10 MINUTE);

 

比如查询最近5分钟修改的数据:

select a from A where a.gmt_updated > SUBDATE(now(),INTERVAL 5 MINUTE)

 

 

 SECOND 秒 SECONDS 
 MINUTE 分钟 MINUTES 
 HOUR 时间 HOURS 
 DAY 天 DAYS 
 MONTH 月 MONTHS 
 YEAR 年 YEARS 
 MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS" 
 HOUR_MINUTE 小时和分钟 "HOURS:MINUTES" 
 DAY_HOUR 天和小时 "DAYS HOURS" 
 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、YEAR_MONTH或YEAR,天数大于结果月份的最大天数则使用最大天数) 
mysql> SELECT "1997-12-31 23:59:59" INTERVAL 1 SECOND; 
  -> 1998-01-01 00:00:00 
mysql> SELECT INTERVAL 1 DAY "1997-12-31"; 
  -> 1998-01-01 
mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND; 
  -> 1997-12-31 23:59:59 
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 SECOND); 
  -> 1998-01-01 00:00:00 
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 DAY); 
  -> 1998-01-01 23:59:59 
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL "1:1" MINUTE_SECOND); 
  -> 1998-01-01 00:01:00 
mysql> SELECT DATE_SUB("1998-01-01 00:00:00",INTERVAL "1 1:1:1" DAY_SECOND); 
  -> 1997-12-30 22:58:59 
mysql> SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR);
  -> 1997-12-30 14:00:00 
mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY); 
  -> 1997-12-02 
mysql> SELECT EXTRACT(YEAR FROM "1999-07-02"); 
  -> 1999 
mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); 
  -> 199907 
mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03"); 
  -> 20102 

 

 

你可以使用常用的格式集中的任何一个指定   DATETIME、DATE   和   TIMESTAMP   值:  
一个   'YYYY-MM-DD   HH:MM:SS '   或   'YY-MM-DD   HH:MM:SS '   格式的字符串。一个“宽松”的语法是被允许的:以任何标点符号作为日期部分和时间部分中的定界符。例如, '98-12-31   11:30:45 '、 '98.12.31   1+30+45 '、 '98/12/31   11*30*45 '   和   '98@12@31   11^30^45 '   均是等价的。  
一个   'YYYY-MM-DD '   或   'YY-MM-DD '   格式的字符串。这里,一个“宽松”的语法同样也是被允许的:例如, '98.12.31 '、 '98-12-31 '、 '98/12/31 '   和   '98@12@31 '   是等价的。  
一个无定界符的   'YYYYMMDDHHMMSS '   或   'YYMMDDHHMMSS '   格式的字符串,只要字符串看起来像是一个日期。例如, '19970523091528 '   和   '970523091528 '   均被解释为   '1997-05-23   09:15:28 ',但是   '971122129015 '   却是违法的(它的分部分是无意义的),该值被插入时将变成   '0000-00-00   00:00:00 '。  
一个无定界符的   'YYYYMMDD '   或   'YYMMDD '   格式的字符串,只要字符串看起来像是一个日期。例如, '19970523 '   和   '970523 '   被解释成为   '1997-05-23 ',但是   '971332 '   却是违法的(它的月和日部分是无意义的),该值被插入时将变成   '0000-00-00 '。  
一个   YYYYMMDDHHMMSS   或   YYMMDDHHMMSS   格式的数字,只要数字看起来像是一个日期。例如,19830905132800   和   830905132800   被解释成为   '1983-09-05   13:28:00 '。  
一个   YYYYMMDD   或   YYMMDD   格式的数字,只要数字看起来像是一个日期。例如,19830905   和   830905   被解释成为   '1983-09-05 '。  
在一个   DATETIME、DATE   或   TIMESTAMP   语境中,一个函数的返回值将随之而变化,例如   NOW()   或   CURRENT_DATE。  
非法的   DATETIME、DATE   或   TIMESTAMP   值将会被转换到适当形式的“零”值( '0000-00-00   00:00:00 '、 '0000-00-00 '   或   00000000000000)。  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值