时间戳即unix时间戳:Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
UNIX时间戳的0按照ISO 8601规范为:1970-01-01T00:00:00Z.一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。在大多数的UNIX系统中UNIX时间戳存储为32位,这样会引发2038年问题或Y2038。三种数据库都可以对数值型时间戳进行互相转换。
为什么要使用unix时间戳:
在现在的系统中经常遇到跨数据库的应用开发,在数据库系统中不同的数据库对与时间类型却有不同解释,比如ORACLE的date和MYSQL里面的date就不能直接兼容转换,数据方面还可以使用数据迁移工具进行转换,
为了实现垮平台在应用系统中记录时间的时候我们就可以使用记录UNIX时间戳的方法做到垮平台性。另外借助时间戳的转换函数,可以对数据库的时间字段进行加密,增强系统的安全性和保密性。
oracle:
数字时间戳转日期:
(to_date('19700101','yyyymmdd') +in_number/86400
+to_number(substr(tz_offset(sessiontimezone),1,3))/24);
日期转数字时间戳:
((in_date-to_date('19700101','yyyymmdd'))*86400-
to_number(substr(tz_offset(sessiontimezone),1,3))*3600)
mysql:
时间戳转日期:
from_unixtime(1490172757);
日期转时间戳:
UNIX_TIMESTAMP(datetime);
sqlserver :
时间戳转日期:
DATEADD(S,1490172757 + 8 * 3600,'1970-01-01 00:00:00');
日期转时间戳:
SELECTDATEDIFF(S,'1970-01-01 00:00:00', '2018-10-03 09:04:48.000') - 8 * 3600 ;