SQL处理时间戳时如何解决时区问题实例详解

目录
  • 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解决时区问题内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mysql时区查看与设置方法

    一.查看数据库时区 show variables like'%time_zone'; mysql> show variables like "%time_zone"; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | CEST | | time_zone | SYSTEM | +------------------+-

  • 解决MySQL8.0时区的问题步骤

    软件版本 Windows:Windows10 MySQL:mysql-8.0.16-winx64.zip 问题描述 java将当前时间保存到MySQL数据库时,MySQL中的时间不正确 问题分析 原因一:java数据库连接使用UTC时区(世界标准时间),即serverTimezone=UTC url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&

  • MySQL修改时区的方法小结

    本文实例总结了MySQL修改时区的方法.分享给大家供大家参考,具体如下: 说明:这里总结记录修改mysql时区的三种方法. 方法一:通过mysql命令行模式下动态修改 1.1 查看mysql当前时间,当前时区 > select curtime(); #或select now()也可以 +-----------+ | curtime() | +-----------+ | 15:18:10 | +-----------+ > show variables like "%time_zon

  • mysql时区问题

    用convert_tz转换时区,你可以用      show   variables   like   'time_zone';      得到时区,如果返回的是"system"的话,你可以用      show   variables   like   'system_time_zone';      得到结果.

  • mysql解决时区相关问题

    前言: 在使用 MySQL 的过程中,你可能会遇到时区相关问题,比如说时间显示错误.时区不是东八区.程序取得的时间和数据库存储的时间不一致等等问题.其实,这些问题都与数据库时区设置有关,本篇文章将从数据库参数入手,逐步介绍时区相关内容. 1.log_timestamps 参数介绍 首先说明下log_timestamps参数并不影响时区,只是设置不同会影响某些日志记录的时间.该参数主要是控制 error log.slow log.genera log 日志文件中的显示时间,但不会影响 genera

  • MySQL查看和修改时区的方法

    今天发现有一个程序插入的时间不对,而该字段是配置的默认值 CURRENT_TIMESTAMP,初步判断是数据库的时区设置问题. 查看时区 登录数据库查看时区配置: mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | EDT | | time_zone |

  • SQL处理时间戳时如何解决时区问题实例详解

    目录 1.问题及解决办法 2.时区差相加公式的实例 补充:SQL 关于时区的处理案例 总结 1.问题及解决办法 (1)问题:由于存储的时间戳是时间戳为GMT(格林尼治标准时间),以秒储存,但由于需要获取的是北京时间,存在时区问题.如何获取北京时区的时间日期? (2)通过上网查找了解决办法,有一堆办法,有说连接时设置地区,都很复杂,本人没成功.尝试成功过的方法如下: ①方法一:在查询前设置时区,输入“set time_zone='+08:00';” 但这个方法存在弊端,不是非常通用,比如需要用py

  • SQL Server 树形表非循环递归查询的实例详解

    很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例. --通过子节点查询父节点 WITH TREE AS( SELECT * FROM Areas WHERE id = 6 -- 要查询的子 id UNION ALL SELECT Areas.* FROM Areas, TREE WHERE TREE.PId = Areas.Id ) SELECT Area FROM TREE --通过父节点查询子节点 WIT

  • Python利用神经网络解决非线性回归问题实例详解

    本文实例讲述了Python利用神经网络解决非线性回归问题.分享给大家供大家参考,具体如下: 问题描述 现在我们通常使用神经网络进行分类,但是有时我们也会进行回归分析. 如本文的问题: 我们知道一个生物体内的原始有毒物质的量,然后对这个生物体进行治疗,向其体内注射一个物质,过一段时间后重新测量这个生物体内有毒物质量的多少. 因此,问题中有两个输入,都是标量数据,分别为有毒物质的量和注射物质的量,一个输出,也就是注射治疗物质后一段时间生物体的有毒物质的量. 数据如下图: 其中Dose of Myco

  • MyBatis 动态SQL和缓存机制实例详解

    有的时候需要根据要查询的参数动态的拼接SQL语句 常用标签: - if:字符判断 - choose[when...otherwise]:分支选择 - trim[where,set]:字符串截取,其中where标签封装查询条件,set标签封装修改条件 - foreach: if案例 1)在EmployeeMapper接口文件添加一个方法 public Student getStudent(Student student); 2)如果要写下列的SQL语句,只要是不为空,就作为查询条件,如下所示,这样

  • Spring AOP切面解决数据库读写分离实例详解

    Spring AOP切面解决数据库读写分离实例详解 为了减轻数据库的压力,一般会使用数据库主从(master/slave)的方式,但是这种方式会给应用程序带来一定的麻烦,比如说,应用程序如何做到把数据写到master库,而读取数据的时候,从slave库读取.如果应用程序判断失误,把数据写入到slave库,会给系统造成致命的打击. 解决读写分离的方案很多,常用的有SQL解析.动态设置数据源.SQL解析主要是通过分析sql语句是insert/select/update/delete中的哪一种,从而对

  • java转换时区时间过程详解

    这篇文章主要介绍了java转换时区时间过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一丶时区 由于世界各国家与地区经度不同,地方时也有所不同,因此会划分为不同的时区. 地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早.东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算,这给人们带来不便. 为了克服时间上的混乱,1884年在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东.西

  • Android 有效的解决内存泄漏的问题实例详解

    Android 有效的解决内存泄漏的问题 Android内存泄漏,我想做Android 应用的时候遇到的话很是头疼,这里是我在网上找的不错的资料,实例详解这个问题的解决方案 前言:最近在研究Handler的知识,其中涉及到一个问题,如何避免Handler带来的内存溢出问题.在网上找了很多资料,有很多都是互相抄的,没有实际的作用. 本文的内存泄漏检测工具是:LeakCanary  github地址:https://github.com/square/leakcanary 什么是内存泄漏? 内存泄漏

  • Android隐藏标题栏及解决启动闪过标题的实例详解

    Android隐藏标题栏及解决启动闪过标题的实例详解 方法一: 在代码中设置 this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 方法二: 在AndroidManifest.xml 里面设置 <application android:icon="@drawable/icon" android:label="@string/app_name" Android:theme="@androi

  • MySql批量插入优化Sql执行效率实例详解

    MySql批量插入优化Sql执行效率实例详解 itemcontractprice数量1万左右,每条itemcontractprice 插入5条日志. updateInsertSql.AppendFormat("UPDATE itemcontractprice AS p INNER JOIN foreigncurrency AS f ON p.ForeignCurrencyId = f.ContractPriceId SET p.RemainPrice = f.RemainPrice * {0},

  • MyBatis动态SQL标签用法实例详解

    1.动态SQL片段 通过SQL片段达到代码复用 <!-- 动态条件分页查询 --> <sql id="sql_count"> select count(*) </sql> <sql id="sql_select"> select * </sql> <sql id="sql_where"> from icp <dynamic prepend="where&quo

随机推荐