SQL 时间戳转DateTime类型

本文详细解释了Unix时间戳是如何产生的,并提供了在SQL中将时间戳转换为普通时间格式的方法,同时说明了不同时间戳长度的转换差异及在不同语言中的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近在工作中通过接口获取时间字段为时间戳的值,直接入库后再页面查询时间格式时候需要通过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    

转载于:https://www.cnblogs.com/a164266729/p/5433793.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值