您当前的位置: 首页 >  sql

MySQL中日期转换 FROM_UNIXTIME和UNIX_TIMESTAMP

发布时间:2018-08-07 16:01:33 ,浏览量:0

MySQL中日期转换 FROM_UNIXTIME和UNIX_TIMESTAMP

函数 FROM_UNIXTIME 将 MySQL 中以 10 位数字存储的时间以日期格式来显示。

语法: FROM_UNIXTIME(unix_timestamp,format) ,例如:

mysql> SELECT FROM_UNIXTIME(1234567890, '%Y-%m-%d %H:%i:%S');

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

| FROM_UNIXTIME(1234567890, '%Y-%m-%d %H:%i:%S') |

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

| 2009-02-14 07:31:30                            |

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

1 row in set (0.00 sec)

 

mysql> select FROM_UNIXTIME(1344887103);  

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

| FROM_UNIXTIME(1344887103) |

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

| 2012-08-14 03:45:03       |

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

1 row in set (0.00 sec)

函数 UNIX_TIMESTAMP 返回指定时间的 UNIX 格式数字串,即 UNIX 时间戳(从 UTC 时间 '1970-01-01 00:00:00' 开始的秒数),通常为十位,如 1344887103 。

语法: UNIX_TIMESTAMP( date )

参数: date 可能是个 DATE 字符串, DATETIME 字符串, TIMESTAPE 字符串,或者是一个类似于 YYMMDD 或者 YYYYMMDD 的数字串。

返回:从 UTC 时间 '1970-01-01 00:00:00' 开始到该参数之间的秒数。服务器将参数 date 转化成 UTC 格式的内部时间。客户端则可以自行设置当前时区。当 UNIX_TIMESTAMP() 用于 1 个 TIMESTAMP 列时,函数直接返回内部时间戳的值;如果传递 1 个超出范围的时间到 UNIX_TIMESTAMP() ,它的返回值是零。如果 date 为空,那么将返回从 UTC 时间 '1970-01-01 00:00:00' 开始到当前时间的秒数。

mysql> select unix_timestamp();

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

| unix_timestamp() |

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

|       1533628203 |

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

1 row in set (0.00 sec)

 

mysql> select FROM_UNIXTIME(1533628203);

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

| FROM_UNIXTIME(1533628203) |

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

| 2018-08-07 15:50:03       |

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

1 row in set (0.00 sec)

 

mysql>

 

1. DATE_FORMAT()函数用于以不同的格式显示日期/时间数据。

 

SQL代码     收藏代码

  1. DATE_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()函数来显示不同的格式。我们使用NOW()来获得当前的日期/时间:

 

SQL代码     收藏代码

  1. DATE_FORMAT(NOW(), '%b%d%Y%h:%i%p'  )  

  2. DATE_FORMAT(NOW(), '%m-%d-%Y'  )  

  3. DATE_FORMAT(NOW(), '%d%b%y'  ))  

  4. DATE_FORMAT(NOW(), '%d%b%Y%T:%f'  )  

 

结果类似:

 

SQL代码     收藏代码

  1.  2008年 12月 29日晚上11:45  

  2. 2008年12月29日  

  3. 29日   年12月  08  

  4.  2008 年 12  月  29   日 16:25:46  

 

如果要格式表中的数据,可以用:

 

2. MySQL数据库中日期与时间函数FROM_UNIXTIME(),UNIX_TIME()...

 

实例:date => int(11)

 

SQL代码     收藏代码

  1. SELECT  FROM_UNIXTIME( date ,  '%Y-%c-%d %h:%i:%s'  )  as  post_date ,   

  2. date_format(NOW(),  '%Y-%c-%d %h:%i:%s'  )  as  post_date_gmt   

  3. FROM  `article`   where  outkey =  'Y'   

 

 

1、FROM_UNIXTIME( unix_timestamp )   参数:通常是壹个十位的数字,如:1344887103   返回值:有两种,可能是类似 'YYYY-MM-DD HH:MM:SS' 这样的字符串,也有可能是类似于 YYYYMMDDHHMMSS.uuuuuu 这样的数字,具体返回什么取决于该函数被调用的形式。

 

Sql代码     收藏代码

  1. mysql>  select  FROM_UNIXTIME(1344887103);  

  2. + ---------------------------+   

  3. | FROM_UNIXTIME(1344887103) |  

  4. + ---------------------------+   

  5. | 2012-08-14 03:45:03       |  

  6. + ---------------------------+   

  7. 1 row  in   set  (0.00 sec)  

 

2、FROM_UNIXTIME( unix_timestamp ,format )   参数 unix_timestamp :与方法 FROM_UNIXTIME( unix_timestamp ) 中的参数含义一样;   参数 format : 转换之后的时间字符串显示的格式;   返回值:按照指定的时间格式显示的字符串;

 

Sql代码     收藏代码

  1. mysql>  select  FROM_UNIXTIME(1344887103, '%Y-%M-%D %h:%i:%s' );  

  2. + -----------------------------------------------+   

  3. | FROM_UNIXTIME(1344887103, '%Y-%M-%D %h:%i:%s' ) |  

  4. + -----------------------------------------------+   

  5. | 2012-August-14th 03:45:03                     |  

  6. + -----------------------------------------------+   

  7. 1 row  in   set  (0.00 sec)  

  8. mysql>  select  FROM_UNIXTIME(1344887103, '%Y-%m-%D %h:%i:%s' );  

  9. + -----------------------------------------------+   

  10. | FROM_UNIXTIME(1344887103, '%Y-%m-%D %h:%i:%s' ) |  

  11. + -----------------------------------------------+   

  12. | 2012-08-14th 03:45:03                         |  

  13. + -----------------------------------------------+   

  14.   

  15. 1 row  in   set  (0.00 sec)  

 

参考链接: https://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_from-unixtime

 

1、UNIX_TIMESTAMP()

返回值:当前时间的UNIX格式数字串,或者说是 UNIX 时间戳(从 UTC 时间'1970-01-01 00:00:00'开始的秒数),通常为十位,如 1344887103。

 

Sql代码     收藏代码

  1. mysql>  select  unix_timestamp();  

  2. + ------------------+   

  3. | unix_timestamp() |  

  4. + ------------------+   

  5. |       1344887103 |  

  6. + ------------------+   

  7. 1 row  in   set  (0.00 sec)  

 

2、UNIX_TIMESTAMP( date )   参数:date 可能是个 DATE 字符串,DATETIME 字符串,TIMESTAPE 字符串,或者是一个类似于 YYMMDD 或者 YYYYMMDD 的数字串。   返回:从 UTC 时间'1970-01-01 00:00:00'开始到该参数之间的秒数。服务器将参数 date 解释成当前时区的壹个值并且将其转化成 UTC 格式的内部时间。客户端则可以自行设置当前时区。当 UNIX_TIMESTAMP() 用于壹个 TIMESTAMP 列时,函数直接返回内部时间戳的值;如果你传递壹个超出范围的时间到 UNIX_TIMESTAMP(),它的返回值是零。

 

Sql代码     收藏代码

  1. mysql>  SELECT  UNIX_TIMESTAMP();  

  2. + ------------------+   

  3. | UNIX_TIMESTAMP() |  

  4. + ------------------+   

  5. |       1344888895 |  

  6. + ------------------+   

  7. 1 row  in   set  (0.00 sec)  

  8.   

  9. mysql>  SELECT  UNIX_TIMESTAMP( '2012-08-14 16:19:23' );  

  10. + ---------------------------------------+   

  11. | UNIX_TIMESTAMP( '2012-08-14 16:19:23' ) |  

  12. + ---------------------------------------+   

  13. |                            1344932363 |  

  14. + ---------------------------------------+   

  15. 1 row  in   set  (0.00 sec)  

 

注意:如果你使用 UNIX_TIMESTAMP() 和 FROM_UNIXTIME() 来转换 TIMESTAMP 值与 Unix 时间戳的值,精度会丢失,因为这个映射在两个方向上不是一一对应的。比如说,由于本地时区的更改,有可能两个 UNIX_TIMESTAMP() 会映射到同壹个 Unix 时间戳的值。 FROM_UNIXTIME() 只会映射到原来的那个时间戳的值上。这里有个例子,在 CET 时区使用 TIMESTAMP:

 

Sql代码     收藏代码

  1. mysql>  SELECT  UNIX_TIMESTAMP( '2005-03-27 03:00:00' );  

  2. + ---------------------------------------+   

  3. | UNIX_TIMESTAMP( '2005-03-27 03:00:00' ) |  

  4. + ---------------------------------------+   

  5. |                            1111885200 |  

  6. + ---------------------------------------+   

  7. mysql>  SELECT  UNIX_TIMESTAMP( '2005-03-27 02:00:00' );  

  8. + ---------------------------------------+   

  9. | UNIX_TIMESTAMP( '2005-03-27 02:00:00' ) |  

  10. + ---------------------------------------+   

  11. |                            1111885200 |  

  12. + ---------------------------------------+   

  13. mysql>   SELECT   FROM_UNIXTIME(1111885200);  

  14. +  --------------------------- +   

  15. | FROM_UNIXTIME(1111885200)|  

  16. +  --------------------------- +   

  17. | 2005-03-27 03:00:00 |  

  18. +  --------------------------- +   

 

 参考链接: https : //dev.mysql.com/doc/refman/5.0/zh/date-and-time-functions.html#function_unix-timestamp  

 

About Me

........................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub( http://blog.itpub.net/26736162 )、博客园( http://www.cnblogs.com/lhrbest )和个人weixin公众号( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://www.cnblogs.com/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群号: 230161599 (满) 、618766405

● weixin群:可加我weixin,我拉大家进群,非诚勿扰

● 联系我请加QQ好友 ( 646634621 ) ,注明添加缘由

● 于 2018-08-01 06:00 ~ 2018-08-31 24:00 在魔都完成

● 最新修改时间:2018-08-01 06:00 ~ 2018-08-31 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

● 小麦苗的微店 : https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

● 小麦苗出版的数据库类丛书 : http://blog.itpub.net/26736162/viewspace-2142121/

● 小麦苗OCP、OCM、高可用网络班 : http://blog.itpub.net/26736162/viewspace-2148098/

● 小麦苗腾讯课堂主页 : https://lhr.ke.qq.com/

........................................................................................................................

使用 weixin客户端 扫描下面的二维码来关注小麦苗的weixin公众号( xiaomaimiaolhr )及QQ群(DBA宝典)、添加小麦苗weixin, 学习最实用的数据库技术。

........................................................................................................................

欢迎与我联系

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2199334/,如需转载,请注明出处,否则将追究法律责任。

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    107766博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0498s