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)函数