• FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别


    Unix时间戳(Unix timestamp),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。

    在MySQL中如何格式化时间戳?
    在mysql中因为timestamp无法支持到毫秒,所以很多时候采用毫秒进行存储。那么如何将存储在数据库中Int类型的时间,如: 1344954515 ,转换成我们正常可以肉眼能看懂的时间格式呢?

    我们一般都使用FROM_UNIXTIME函数。
    FROM_UNIXTIME(unix_timestamp,format)
    unix_timestamp为需要处理的时间戳(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串。
    format为需要转换的格式
    mysql官方手册的解释为:返回'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS 格式值的unix_timestamp参数表示,具体格式取决于该函数是否用在字符串中或是数字语境中。若format 已经给出,则结果的格式是根据format 字符串而定。
    format的格式和日常的编程语言的时间格式是保持一致的。
    例如:

    mysql> select FROM_UNIXTIME(1344954515,'%Y-%m-%d %H:%i:%S');
    +-----------------------------------------------+
    | FROM_UNIXTIME(1344954515,'%Y-%m-%d %H:%i:%S') |
    +-----------------------------------------------+
    | 2012-08-14 22:28:35                           |
    +-----------------------------------------------+
    1 row in set (0.00 sec)

     
    UNIX_TIMESTAMP()是与之相对的时间函数
    UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
    官方手册解释为:若无参数调用,则返回一个 Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数) 作为无符号整数。若用date 来调用 UNIX_TIMESTAMP(),它会将参数值以'1970-01-01 00:00:00' GMT后的秒数的形式返回。
    date 可以是一个 DATE 字符串、一个 DATETIME字符串、一个 TIMESTAMP或一个当地时间的YYMMDD 或YYYMMDD格式的数字。

    例如:
     

    mysql> select UNIX_TIMESTAMP('2012-09-04 18:17:23');
    +---------------------------------------+
    | UNIX_TIMESTAMP('2012-09-04 18:17:23') |
    +---------------------------------------+
    |                            1346753843 |
    +---------------------------------------+
    1 row in set (0.00 sec)


    实际应用中,我们可以将格式转换为毫秒的与数据库中进行比较,也可以将数据库的Int格式转换为普通格式进行比较。
    例如:查询所有创建日期大于2012-09-03 18:00:00之后的博客数据
    方法一:将日期转换为int比较

    select * from blog where createdTime > UNIX_TIMESTAMP('2012-09-03 18:00:00' );


    方法二:将int转换为时间格式比较

    select * from blog where FROM_UNIXTIME(createdTime, '%Y-%m-%d %H:%i:%S') > '2012-09-03 18:00:00';


    下列修饰符可以被用在format字符串中,可以组合一些常见日期格式:
    %M 月名字(January……December)
    %W 星期名字(Sunday……Saturday)
    %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
    %Y 年, 数字, 4 位
    %y 年, 数字, 2 位
    %a 缩写的星期名字(Sun……Sat)
    %d 月份中的天数, 数字(00……31)
    %e 月份中的天数, 数字(0……31)
    %m 月, 数字(01……12)
    %c 月, 数字(1……12)
    %b 缩写的月份名字(Jan……Dec)
    %j 一年中的天数(001……366)
    %H 小时(00……23)
    %k 小时(0……23)
    %h 小时(01……12)
    %I 小时(01……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 星期(0……52), 这里星期天是星期的第一天
    %u 星期(0……52), 这里星期一是星期的第一天
    %% 一个文字“%”。

    转自:http://www.duwaiweb.com/blog/20120904_ce7309cf-e25a-45f7-8397-0700fa459466.html

  • 相关阅读:
    Windows 7 32位上硬盘安装linux[ubuntu13.04] 双系统
    【笨嘴拙舌WINDOWS】BMP图片浏览器
    【笨嘴拙舌WINDOWS】设备无关图(*.bmp)
    【笨嘴拙舌WINDOWS】GDI对象之位图
    Android-Java-对象在内存中的简单关系图
    Android-Java-类与对象的关系
    Android-Java-面向对象与面向过程举例
    Android-Java-面向对象与面向过程的简单理解
    Android-ANR异常
    Android-Genymotion Unable to load VirtualBox engine
  • 原文地址:https://www.cnblogs.com/theseven/p/4962518.html
Copyright © 2020-2023  润新知