温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SQL处理时间戳时怎么解决时区问题

发布时间:2022-08-30 13:55:44 来源:亿速云 阅读:129 作者:iii 栏目:开发技术

本篇内容介绍了“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处理时间戳时怎么解决时区问题”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql
AI