SQLServer中将时间戳转换为时间格式

本文详细介绍了如何使用SQL将时间戳转换为普通日期格式,并解决了在转换过程中遇到的整数溢出问题。

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

时间戳就是一个从1970-01-01 08:00:00到时间的相隔的秒数。所以只要把这个时间戳加上:1970-01-01 08:00:00这个时间就可以得到你想要的时间了:

select DATEADD(second,1268738429 + 8 * 60 * 60,'1970-01-01 00:00:00')

注解:北京时间与GMT时间关系  

1.GMT是中央时区,北京在东8区,相差8个小时   

2.所以北京时间 = GMT时间 + 八小时

例如: SELECT DATEADD(s,1160701488 + 8 * 3600,'1970-01-01 00:00:00') --时间戳转换成普通时间SELECT DATEADD(second,1160701488 + 8 * 3600,'1970-01-01 00:00:00')

SELECT DATEDIFF(s,'1970-01-01 00:00:00', '2006-10-13 09:04:48.000') - 8 * 3600 --普通时间转换成时间戳

SELECT DATEDIFF(second,'1970-01-01 00:00:00', '2006-10-13 09:04:48.000') - 8 * 3600

本文博主遇到了如下的问题,所以修改了一下sql,做了类型转换:

问题:The conversion of the varchar value '1478516592689' overflowed an int column 明显是varchar的值默认转为int的时候超出了界限,所以通过下面的sql把int转为了bigint: CONVERT(VARCHAR(20),DATEADD(SECOND,CAST(#{item.finish_time} as bigint)/1000+28800,'1970-01-01'),120)

将时间戳转换为普通日期类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值