Sql—Date相关

这里总结一下mysql中日期常用函数:

1、NOW():返回但前日期和时间,格式yyyy-mm-dd hh:mm:ss

SELECT NOW();

+---------------------+

| now()               |

+---------------------+

| 2016-01-20 21:06:20 |

+---------------------+

2、CURDATE():返回但前日期,格式 yyyy-mm-dd

SELECT CURDATE();

+------------+

| CURDATE()  |

+------------+

| 2016-01-20 |

+------------+

3、 CURTIME():返回当前时间,格式 hh:mm:ss

SELECT CURTIME();

+-----------+

| CURTIME() |

+-----------+

| 21:11:19  |

+-----------+

4、 DATE(datetime):提取日期时间格式中的日期,格式 yyyy-mm-dd

SELECT DATE(NOW());

+-------------+

| DATE(NOW()) |

+-------------+

| 2016-01-20  |

+-------------+

5、 EXTRACT(xxxx FROM datetime):返回日期时间中的单独部分

xxxx选项:

YEAR、MONTH、DAY、WEEK、HOUR、MINUTE、SECOND、YRAY_MONTH、DAY_HOUR、DAY_MINUTE、DAY_SECOND、DAY_MICROSECOND、HOUR_MINUTE、HOUR_SECOND、MINUTE_SECOND、MINUTE_MICROSECOND、QUARTER、MICROSECOND

SELECT EXTRACT(YEAR FROM NOW()),EXTRACT(MONTH FROM NOW()),EXTRACT(DAY FROM NOW()),EXTRACT(WEEK FROM NOW());

+--------------------------+---------------------------+-------------------------+--------------------------+

| EXTRACT(YEAR FROM NOW()) | EXTRACT(MONTH FROM NOW()) | EXTRACT(DAY FROM NOW()) | EXTRACT(WEEK FROM NOW()) |

+--------------------------+---------------------------+-------------------------+--------------------------+

|                     2016 |                         1 |                      20 |                        3 |

+--------------------------+---------------------------+-------------------------+--------------------------+

6、 DATE_ADD(datetime,INTERVAL expr type):向日期添加指定间隔

添加间隔类型type参数:

同EXTRACT()中xxxx

SELECT DATE_ADD(NOW(),INTERVAL 1 DAY);   天数加一

+--------------------------------+

| DATE_ADD(NOW(),INTERVAL 1 DAY) |

+--------------------------------+

| 2016-01-21 21:40:25            |

+--------------------------------+

7、 DATE_SUB(datetime,INTERVAL expr type),使用同上,只不过是减一

8、DATEDIFF(date1,date2) 返回两个日期之间的天差数,date1-date2 只有日期参加计算

SELECT DATEDIFF(NOW(),DATE_ADD(NOW(),INTERVAL 1 DAY));

+------------------------------------------------+

| DATEDIFF(NOW(),DATE_ADD(NOW(),INTERVAL 1 DAY)) |

+------------------------------------------------+

|                                             -1     |

+------------------------------------------------+

9、 DATE_FORMAT(datetime,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 位

SELECT DATE_FORMAT(NOW(),'%Y%m%d');

+-----------------------------+

| DATE_FORMAT(NOW(),'%Y%m%d') |

+-----------------------------+

| 20160120                    |

+-----------------------------+

10、Mysql中日期存储格式

DATE:YYYY-MM-DD

DATETIME:YYYY-MM-DD HH:MM:SS

DATESTAMP:YYYY-MM-DD HH:MM:SS

YEAR:YYYY或YY

11、最后加一个企业应用:数据库中mo月作为partition,mo的计算方式是:年*12+月份,比如2016-01-21 为2016*12+1=24193,这时候需要考虑获取这个值了,并且这个是每天早上跑的是昨天的数据:

substr(date_format(date_sub(curdate(),interval 1 day),%Y%m),1,4)+substr(date_format(date_sub(curdate(),interval 1 day),%Y%m),5,2)

猜你喜欢

转载自blog.csdn.net/colin_yjz/article/details/50553189