SQL处理时间戳时如何解决时区问题实例详解 目录 1.问题及解决办法 2.时区差相加公式的实例 补充:SQL 关于时区的处理案例 总结 1.问题及解决办法 (1)问题:由于存储的时间戳是时间戳为GMT(格林尼治标准时间),以秒储存,但由于需要获取的是北京时间
目录
- 1.问题及解决办法
- 2.时区差相加公式的实例
- 补充:SQL 关于时区的处理案例
- 总结
1.问题及解决办法
(1)问题:由于存储的时间戳是时间戳为GMT(格林尼治标准时间),以秒储存,但由于需要获取的是北京时间,存在时区问题。如何获取北京时区的时间日期?
(2)通过上网查找了解决办法,有一堆办法,有说连接时设置地区,都很复杂,本人没成功。尝试成功过的方法如下:
①方法一:在查询前设置时区,输入“set time_zone='+08:00';”
但这个方法存在弊端,不是非常通用,比如需要用python调用数据库查询时会报错。
②方法二:直接用公式将北京时区的时差相加,公式为:
(timestamp+8*3600)
说明:timestamp为时间戳,可为数字串也可为存在时间戳的字段。3600为一小时的秒数。该方法可以非常通用。
2.时区差相加公式的实例
(1)将时间戳转为小时(0-24小时)。其中timestamp为时间戳。
查询语句
select [column(s),]
(timestamp+8*3600)%86400/3600 as hour
[from table]
说明:时间戳是以秒8*3600表示北京时区的时差,86400=24*3600表示1天的秒数,“(timestamp+8*3600)%86400”中“%”取余数,余数则为当天时间点的秒数。3600是一小时的秒数,用当天时间点的秒数除以3600表示小时。
补充:SQL 关于时区的处理案例
设置时间偏移:SWITCHOFFSET(StopageStartTime,'+08:00')
时间转换:CONVERT(VARCHAR(19),SWITCHOFFSET(StopageStartTime,'+08:00'),121)
SELECT CONVERT(VARCHAR(19),SWITCHOFFSET(StopageStartTime,'+08:00'),121) AS StopageStartTime,
CONVERT(VARCHAR(19),SWITCHOFFSET(StopageEndTime,'+08:00'),121) AS StopageEndTime,StopageType,AccidentReason_Preventive
,EquipmentCode
FROM dbo.EquipmentDetection_Item
WHERE
CONVERT(VARCHAR(19),SWITCHOFFSET(StopageStartTime,'+08:00'),121)>=@startTime
总结
到此这篇关于SQL处理时间戳时如何解决时区问题的文章就介绍到这了,更多相关SQL解决时区问题内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
本文标题为:SQL处理时间戳时如何解决时区问题实例详解
- 基于Python制作一个简单的文章搜索工具 2023-07-28
- redis清除数据 2023-09-13
- Oracle 删除大量表记录操作分析总结 2023-07-23
- 搭建单机Redis缓存服务的实现 2023-07-13
- Numpy中如何创建矩阵并等间隔抽取数据 2023-07-28
- SQLSERVER调用C#的代码实现 2023-07-29
- SQL Server 2022 AlwaysOn新特性之包含可用性组详解 2023-07-29
- MySQL8.0.28安装教程详细图解(windows 64位) 2023-07-26
- Mongodb启动报错完美解决方案:about to fork child process,waiting until server is ready for connections. 2023-07-16
- 在阿里云CentOS 6.8上安装Redis 2023-09-12