数据库时间戳(什么是mysql 的时间戳)
各位老铁们,大家好,今天由我来为大家分享数据库时间戳,以及什么是mysql 的时间戳的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
时间戳是什么,通俗解释
时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。通俗的讲,时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。
时间戳(time-stamp)是一个经加密后形成的凭证文档,它包括三个部分:
1、需加时间戳的文件的摘要(digest);
2、DTS收到文件的日期和时间;
3、DTS的数字签名。
一般来说,时间戳产生的过程为:用户首先将需要加时间的文件用Hash编码加密形成摘要,然后将该摘要发送到DTS,DTS在加入了收到文件摘要的日期和时间信息后再对该文件加密(数字签名),然后送回用户。
书面签署文件的时间是由签署人知己写上的,而数字时间戳则不然,它是有认证单位DTS来加的,以DTS收到文件的时间为依据。
扩展资料
《时间戳规范》的标准中规定了时间戳的保存、时间戳的备份、时间戳的检索、时间戳的删除和销毁、时间戳的查看和验证。
时间戳的保存包括在TSA(时间戳机构)方的保存和在用户方的保存。在TSA方的保存涉及到时间戳数据库的管理和时间戳。
记录应当包含的信息项,一般最少应包括入库时间、序列号、完整编码等。时间戳在用户方一般由用户自行保存。
时间戳的备份在标准中规定了一系列要求,如定期备份、备份介质等。
时间戳的检索在标准中规定了至少三种检索方式,包括分别按照入库时间、序列号、完整编码检索。
当TSA系统由于内部错误或者外部攻击导致产生错误的时间戳时,标准规定了删除时应遵循的要求。在确定某时间戳已经丧失其价值后,标准规定了销毁时应遵循的要求。
参考资料来源:百度百科-时间戳
什么是mysql 的时间戳
1、将时间转换为时间戳
[sql] view plaincopyprint?
select unix_timestamp('2009-10-26 10-06-07')
如果参数为空,则处理为当前时间
2、将时间戳转换为时间
[sql] view plaincopyprint?
select from_unixtime(1256540102)
有些应用生成的时间戳是比这个多出三位,是毫秒表示,如果要转换,需要先将最后三位去掉,否则返回NULL
UNIX_TIMESTAMP(date)
如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。
[sql] view plaincopyprint?
mysql> select UNIX_TIMESTAMP();
-> 882226357
mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580
当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。
FROM_UNIXTIME(unix_timestamp)
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串还是或数字上下文中被使用。
[sql] view plaincopyprint?
mysql> select FROM_UNIXTIME(875996580);
->'1997-10-04 22:23:00'
mysql> select FROM_UNIXTIME(875996580)+ 0;
-> 19971004222300
FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。
[sql] view plaincopyprint?
mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
'%Y%D%M%h:%i:%s%x');
->'1997 23rd December 03:43:30 x'
通过 UNIX_TIMESTAMP函数把 MySQL数据库中的 date类型数据转换成 unix timestamp形式的一个整形数字:
[sql] view plaincopyprint?
select UNIX_TIMESTAMP('2006-02-28') testdate;
[sql] view plaincopyprint?
按理说得到的时间戳应该可以直接拿来给 PHP的 date()等函数使用。但奇怪的是:
echo date("Y-m-d",$testdate);
显示出来的日期跟数据库实际的日期相比却少了一天,百思不得其解。反复查看 MySQL关于 UNIX_TIMESTAMP函数的说明,终于发现问题所在:“The server interprets date as a value in the current time zone and converts it to an internal value in UTC.”原来 MySQL的 UNIX_TIMESTAMP函数得到的时间戳是 UTC时间,而不是服务器设定的特定 Time zone的时间。经过这样一转化,时间戳就凭空少了8个小时(对于咱这里来说),而 PHP中的 timestamp则计算的都是系统设定时区的当地时间。因此 2006-02-28这个日期被减去了8个小时,自然变成了2006-02-27。
[sql] view plaincopyprint?
解决方法:把这八个小时加回去(UNIX_TIMESTAMP('2006-02-28'+ INTERVAL 8 HOUR));或者弃用 UNIX_TIMESTAMP函数,直接得到 MySQL date字符串之后通过 strtotime()函数来把字符串转化成真正的本地时间戳。
找出下个月生日的动物也是容易的。假定当前月是4月,那么月值是4,你可以找在5月出生的动物(5月),方法是:
[sql] view plaincopyprint?
mysql> SELECT name, birth FROM pet WHERE MONTH(birth)= 5;
.................
$conn=mysql_connect("localhost","root","1234")or die("连接数据库失败");
$conndb=mysql_select_db("test",$conn)or die("连接表失败");
$query="select* from ttable";
$result= mysql_query($query,$conn);
while($row= mysql_fetch_array($result)){
$rows[]=$row;
}
$random=rand(0,count($rows));
print_r($rows[$random]);
将MYSQL数据库里的时间戳转换成时间
from_unixtime()是MySQL里的时间函数
select uid,userid,username,email,FROM_UNIXTIME(addtime,'%Y年%m月%d') from members
以上例子是sql语句的例子,直接能将mysql的时间戳类型转换成日期格式
date为需要处理的参数(该参数是Unix时间戳),可以是字段名,也可以直接是Unix时间戳字符串
后面的'%Y%m%d'主要是将返回值格式化(这里的时间格式可以动态定义)
例如:
mysql>SELECT FROM_UNIXTIME( 1249488000,'%Y%m%d')
->20071120
mysql>SELECT FROM_UNIXTIME( 1249488000,'%Y年%m月%d')
->2007年11月20
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();(执行使得时间:2009-08-06 10:10:40)
->1249524739
mysql> SELECT UNIX_TIMESTAMP('2009-08-06');
->1249488000
使用 FROM_UNIXTIME函数,具体如下: FROM_UNIXTIME(unix_timestamp,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),这里星期一是星期的第一天%%一个文字“%”。
好了,文章到这里就结束啦,如果本次分享的数据库时间戳和什么是mysql 的时间戳问题对您有所帮助,还望关注下本站哦!