mysql中时间函数的说明,挺有用的

接触过sql的人都知道,sql里面有一些内置函数,比如count(),sum(),max(),min()等。今天先学习一下mysql中一些日期函数:

 

函数描述
NOW()返回当前的日期和时间
CURDATE()返回当前的日期
CURTIME()返回当前的时间
DATE()提取日期或日期/时间表达式的日期部分
EXTRACT()返回日期/时间按的单独部分
DATE_ADD()给日期添加指定的时间间隔
DATE_SUB()从日期减去指定的时间间隔
DATEDIFF()返回两个日期之间的天数
DATE_FORMAT()用不同的格式显示日期/时间

 

NOW(),CURDATE(),CURTIME(),在我看来一般用于建表语句中deflaut中,来生成当前时间。

DATE(date)则是提取参数中的日期部分。比如:DATE('2011-06-20 14:22:22') 输出 2011-06-20

EXTRACT(unit FROM date)

unit的值如下:

 

Unit 值
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

 

DATE_ADD(date,INTERVAL num  type)

type也是上述表格中的值,num可以为负。

 

DATE_SUB()同上,如果num为负值,则是加上该数值。

 

DATEDIFF(date1,date2) 返回的是第一个日期比第二个日期多的天数,如果第二个日期大于第一个日期,则返回负数。

比如DATEDIFF('2008-12-31','2008-11-30')  返回31 DATEDIFF('2008-11-30','2008-12-31') 则返回-31

 

DATE_FORMAT(date,format)

format可以为如下值,及其组合:

格式描述
%a                             缩写星期名
%b                             缩写月名
%c                            月,数值
%D                            带有英文前缀的月中的天
%d                            月的天,数值(00-31)
%e                            月的天,数值(0-31)
%f                            微秒
%H                            小时 (00-23)
%h                            小时 (01-12)
%I                            小时 (01-12)
%i                            分钟,数值(00-59)
%j                            年的天 (001-366)
%k                            小时 (0-23)
%l                            小时 (1-12)
%M                            月名
%m                            月,数值(00-12)
%p                            AM 或 PM
%r                            时间,12-小时(hh:mm:ss AM 或 PM)
%S                            秒(00-59)
%s                            秒(00-59)
%T                            时间, 24-小时 (hh:mm:ss)
%U                            周 (00-53) 星期日是一周的第一天
%u                            周 (00-53) 星期一是一周的第一天
%V                            周 (01-53) 星期日是一周的第一天,与 %X 使用
%v                            周 (01-53) 星期一是一周的第一天,与 %x 使用
%W                            星期名
%w                            周的天 (0=星期日, 6=星期六)
%X                            年,其中的星期日是周的第一天,4 位,与 %V 使用
%x                            年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y                            年,4 位
%y                            年,2 位

 

DATE_FORMAT()可以输出我们想要的格式的日期,比如:

DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
DATE_FORMAT(NOW(),'%m-%d-%Y')
DATE_FORMAT(NOW(),'%d %b %y')
DATE_FORMAT(NOW(),'%d %b %Y %T:%f')

对应的结果为:

 

Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635

 

最近坐一个group by的sql语句的时候,要对日期进行每月的group by,所以去百度上查了下mysql的日期函数,group by 中就可以代入上述函数进行group by,缺点呢,大数据量下应该非常耗资源。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值