加入收藏 | 设为首页 | 会员中心 | 我要投稿 百客网 - 百科网 (https://www.baikewang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

MySQL中unix时间戳的小知识

发布时间:2022-11-03 12:46:35 所属栏目:Unix 来源:
导读:  最近在一家公司实习所做的项目后台是用php写的,同事喜欢用unix时间戳来存储时间,刚开始觉得很不直观,倒不如直接用date来存储,直观又简洁。但是有经验的人做出的决定肯定是有原因的。

  什么是unix时间
  最近在一家公司实习所做的项目后台是用php写的,同事喜欢用unix时间戳来存储时间,刚开始觉得很不直观,倒不如直接用date来存储,直观又简洁。但是有经验的人做出的决定肯定是有原因的。
 
  什么是unix时间戳?
 
  unix时间戳是从1970年1月1日0时0分0秒开始计算秒数的一个数值,在最近几年里,在数据库中存放的应该都是以1开头的一串11位数字,所以,刚好在mysql中以int(11)型存储。
 
  为什么要用unix时间戳?
 
  在现在的系统中经常遇到跨数据库的应用开发,在数据库系统中不同的数据库对与时间类型却有不同解释unix时间戳,比如ORACLE的date和MYSQL里面的date就不能直接兼容转换,数据方面还可以使用数据迁移工具进行转换,但是对与应用来说那就是灾难。
 
  为了实现垮平台在应用系统中记录时间的时候我们就可以使用记录UNIX时间戳的方法做到垮平台性。现在大多数的语言java、PHP、Perl等都支持直接取UNIX时间戳,将需要记录的时间记录为UNIX时间戳,这样就可以不同的数据库系统中的垮平台性,对与时间的操作只要对时间戳操作就行了。
 
  在mysql中将查询结果为unix时间戳转换为date格式
 
  select from_unixtime(c_order_time)order_time,from_unixtime(c_over_time)over_time from t_student
 
  查询结果如下:
 
  这里写图片描述
 
  关于from_unixtime
 
  FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)是MySQL里的时间函数
 
  ,unix_timestamp可以是字段名,也可以直接是Unix 时间戳,format主要是将返回值格式化。
 
  若format已经给出,则结果的格式是根据format 字符串而定。
 
  返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。
 
  根据format字符串格式化date值。
 
  下列修饰符可以被用在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)
 
  %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 星期(0……52), 这里星期天是星期的第一天
 
  %u 星期(0……52), 这里星期一是星期的第一天
 
  %% 一个文字“%”。
 
  那将日期转换为unix时间戳呢?当然也有对应的函数叫UNIX_TIMESTAMP
 
  unix_timestamp()函数的作用是返回一个确切的时间点的UNIX时间戳,这个Unix时间戳是一个无符号整数。unix_timestamp()函数有两种重载形式,一是不带任何参数,另外一个是带有一个Date或DateTime或TimeStamp类型的参数。
 
  unix_timestamp(),返回自1970-1-1 8:00:00开始到当前系统时间为止的秒数。
 
  unix_timestamp(date),返回1970-1-1 8:00:00开始到date所代表的时间为止的秒数,对于早于1970-1-1 8:00:00的时间,总是返回 0 。
 

(编辑:百客网 - 百科网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章