什么是Unix 时间戳
时间戳,其实指的就是能证明某一份数据在某个时间点之前就已经存在的、完整的、可以验证的数据,一般是一个字符序列。
Unix 时间戳(Unix timestamp),或称 Unix 时间(Unix time)、POSIX 时间(POSIX time),是一种时间表示方式,定义为从格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒起至现在的总秒数。Unix 时间戳不仅被使用在 Unix 系统、类 Unix 系统中,也在许多其他操作系统中被广泛采用。
众所周知,大部分的计算机系统中,时间戳具体是指从格林尼治时间 1970 年 01 月 01 日 00 时 00 分 00 秒(北京时间 1970 年 01 月 01 日 08 时 00 分 00 秒)起至现在的秒数。
时间戳即服务器给数据块加上的时间标记,首先在在当前数据块的哈希值打上时间戳,然后再发布到网络中。这就证明了在标识的时间刻度下,这个数据是存在的。
- 10位时间戳是把时间精确到秒级
- 13位时间戳是把时间精确到毫秒级,所以两者是1000倍的关系
1、字符串时间类型转换成10位时间戳
select FLOOR(unix_timestamp(create_time)) from page;
eg:select FLOOR(UNIX_TIMESTAMP('2020-06-30')) from `boc_circle` #结果为1593446400 /*2020-08-31 1598803200 2020-07-01 1593532800 2020-09-01 1598889600 2020-06-30 1593446400*/
create_time为字段名,page为表名
2、13位时间戳转换成日期类型
Select FROM_UNIXTIME(round(time_ms / 1000,0)) from page ;
time_ms为字段名,page为表名
3、10位时间戳转换成日期类型
Select FROM_UNIXTIME(time_ms) from page ;
select FROM_UNIXTIME(time_ms,format) from page ; #
将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示。time_ms为字段名 page为表名 format格式
time_ms为字段名,page为表名
select FROM_UNIXTIME(1593532800) from `boc_circle_post` #结果为2020-07-01 00:00:00 <=>select FROM_UNIXTIME(1593532800, '%Y-%m-%d %H:%i:%S')from `boc_circle_post` #结果为2020-07-01 00:00:00
select FROM_UNIXTIME(1593532800,'%Y-%m-%d')from `boc_circle_post` #结果为2020-07-01 PS:下列修饰符可以被用在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), 这里星期一是星期的第一天 %% 一个文字“%”
评论