SQL 时间戳转DateTime类型


  最近在工作中通过接口获取时间字段为时间戳的值,直接入库后再页面查询时间格式时候需要通过SQL语句将时间戳格式装换为时间格式进行比较,首先我们需要知道时间戳格式是怎么产生的,: Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中

  时间类型转换为时间戳会有10位和13位两种区别,10 位的时间戳的源时间格式为 yyyy-MM-dd hh:MM:ss .000  毫秒位数为三个零,而13位的时间戳格式是包含了毫秒数的。

  10位的时间戳格式在SQL中转换为普通时间格式的方法:DATEADD(s, Unix timestamp+8*3600, '1970-01-01 00:00:00')

  13 位的时间戳转换为普通时间格式不能直接使用这种方式,所以在这里我的做法是截取前边10位为无毫秒的时间格式的时间戳,所以写法:

    DATEADD(S,CAST( SUBSTRING(CreateTime,1,10) AS INT ) + 8 * 3600,'1970-01-01 00:00:00 ')  

  在SQL中普通时间格式转为时间戳格式:DATEDIFF(s, '1970-01-01 00:00:00', time)  

在不同的语言中实现的方式不同,参见 http://tool.chinaz.com/Tools/unixtime.aspx    


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM