Mysql 时间日期函数运用与总结

Mysql 中的时间与日期常常会用到,但是每次都得找,这里结合工作日常总结一下。

|——获取当前时间【正常时间】

1. MySQL 获得当前时间函数:current_timestamp, current_timestamp()

mysql> select current_timestamp(),current_timestamp;
+---------------------+---------------------+
| current_timestamp() | current_timestamp   |
+---------------------+---------------------+
| 2014-04-15 13:20:28 | 2014-04-15 13:20:28 |
+---------------------+---------------------+
1 row in set

2,Mysql (时间戳与正常日期之间的转换)转换函数。

 

|——获取当前时间【时间戳】

mysql> select unix_timestamp();
+------------------+
| unix_timestamp() |
+------------------+
| 1397539493       |
+------------------+
1 row in set

 

|——将某一时间日期转换成时间戳【2008-08-08】我们的奥运会举办的日子,看着开幕式,我记得当时热泪盈眶,歌唱祖国的时候眼泪止不住的流。

mysql> select unix_timestamp('2008-08-08');
+------------------------------+
| unix_timestamp('2008-08-08') |
+------------------------------+
| 1218124800                   |
+------------------------------+
1 row in set

 

|——更加精确的时间格式:

mysql> select unix_timestamp('2008-08-08 20:08:00');
+---------------------------------------+
| unix_timestamp('2008-08-08 20:08:00') |
+---------------------------------------+
| 1218197280                            |
+---------------------------------------+
1 row in set

 

|———将时间戳转化成看得懂的日期呢:【1399999999】

mysql> select from_unixtime('1399999999');
+-----------------------------+
| from_unixtime('1399999999') |
+-----------------------------+
| 2014-05-14 00:53:19         |
+-----------------------------+
1 row in set

 

 

mysql> select from_unixtime('1399999999','%Y-%m-%d');
+----------------------------------------+
| from_unixtime('1399999999','%Y-%m-%d') |
+----------------------------------------+
| 2014-05-14                             |
+----------------------------------------+
1 row in set

 

|——格式化日期 【 DATE_FORMAT(date,format) 】依照 format 字符串格式化 date 值

%M 月的名字 (January..December)
%W 星期的名字 (Sunday..Saturday)
%D 有英文后缀的某月的第几天 (0th, 1st, 2nd, 3rd, etc.)
%Y 年份,数字的,4 位
%y 年份,数字的,2 位
%X 周值的年份,星期日是一个星期的第一天,数字的,4 位,与 ‘%V’ 一同使用
%x 周值的年份,星期一是一个星期的第一天,数字的,4 位,与 ‘%v’ 一同使用
%a 缩写的星期名 (Sun..Sat)
%d 月份中的天数,数字的 (00..31)
%e 月份中的天数,数字的 (0..31)
%m 月,数字的 (00..12)
%c 月,数字的 (0..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 星期 (00..53),星期日是一个星期的第一天
%u 星期 (00..53),星期一是一个星期的第一天
%V 星期 (01..53),星期日是一个星期的第一天。与 ‘%X’ 一起使用%v 星期 (01..53),星期一是一个星期的第一天。与 ‘%x’ 一起使用%% 一个字母 “%”

|—— 来个正常的切割

 

mysql> select DATE_FORMAT(CURRENT_TIMESTAMP(),'%Y-%m-%d');
+---------------------------------------------+
| DATE_FORMAT(CURRENT_TIMESTAMP(),'%Y-%m-%d') |
+---------------------------------------------+
| 2014-04-15                                  |
+---------------------------------------------+
1 row in set

 

mysql> select DATE_FORMAT('2008-08-08 20:08:00','%Y-%m-%d');
+-----------------------------------------------+
| DATE_FORMAT('2008-08-08 20:08:00','%Y-%m-%d') |
+-----------------------------------------------+
| 2008-08-08                                    |
+-----------------------------------------------+
1 row in set

 

|——有个小需求【我们的数据是这样,按天统计每天的数据情况】

id    time                  sell

1     1353555093       139.5

2     1353555110       21 

3     1353555112       65

|————【方法1】

SELECT date_format(FROM_UNIXTIME( `time`),'%Y-%m-%d') AS time,count(*) as count FROM `表名` WHERE 1 group by time

|————【方法2】

select from_unixtime(`time`,'%Y-%m-%d') AS time,count(*) AS count from `表名` where 1 group by time

 

 

参考:

http://blog.csdn.net/ichsonx/article/details/1774462 mysql的日期和时间函数–date_format

http://blog.sina.com.cn/s/blog_645e12550100o6yt.html  MySQL 时间戳(Timestamp)函数

上一篇:Spring Boot进阶系列三


下一篇:hiho一下21周 线段树的区间修改 离散化