查询页面展示时间比数据库少8个小时
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询页面展示时间比数据库少8个小时相关的知识,希望对你有一定的参考价值。
数据库时区是CST +8 但是页面查询时间还是少8个小时
mysql数据库创建后。默认的时区比东八区少了八个小时。如果sql语句中使用到mysql的时间的话就会比正常时间少了八个小时。所以需要修改mysql的系统时区。set global time_zone = '+8:00';设置时区更改为东八区
flush privileges; 刷新权限 参考技术A 在catalina.sh中增加如下配置:JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai"追问
没用使用tomcat 用的docker容器启动的服务
查询 SQL 时,传递给查询的时间比我设置的时间少 2 小时。为啥?
【中文标题】查询 SQL 时,传递给查询的时间比我设置的时间少 2 小时。为啥?【英文标题】:When querying SQL, time that passed to query is less 2 hours of the time I set. Why?查询 SQL 时,传递给查询的时间比我设置的时间少 2 小时。为什么? 【发布时间】:2018-02-09 12:22:51 【问题描述】:请指教。
使用 ExtJS 和 Oracle SQL。情况是这样的:
我必须在两个日期dateFrom
和dateTo
之间从数据库获取文件。
我的dateTo
设置为当天结束,例如 2018-02-09 23:59:59。
let dateTo = new Date()
dateTo = Ext.Date.clearTime(dateTo);
dateTo.setHours(23, 59, 59, 999);
当我查询时,过去的日期都比我设置的日期少 2 小时(2018-02-09 21:59:59)。为什么会发生这种情况,有人?是因为这个 GMT+2 业务吗?
capture1.png
来自 SQL 查询,capture2.png
是 console.log(dateTo)
以及如何治愈它。
非常感谢!
【问题讨论】:
可能是由于白天保存 看起来您提供的日期正在从本地时区转换为 UTC,是的。没有看到setHours()
和 SQL 调用之间发生了什么,不知道在什么时候。可能与getTime()
always giving UTC?有关
Alex,DB 调用在我将时间设置为 23:59:59 之后紧随其后。想知道如何防止它减去 2 小时。我是对的,在目前的情况下,我只从 DB 获取到 21:59:59 的文档?干杯
数据库中列的数据类型是什么?
您的 ExtJS 前端是否直接与数据库通信?当我偶然发现同样的问题时,问题既不在前端也不在数据库中,而是在后端逻辑中(你不说你用的是什么:C#、PHP、JSF...)...... C# 使用的地方奇怪的DateTimeKind
设置。
【参考方案1】:
通过减去 GMT Diff 来计算日期
gmtDiff = Ext.Date.format(dateTo, 'Z') * 1000然后看结果:
Ext.Date.format(dateTo, 'Y-m-d H:i:s')【讨论】:
以上是关于查询页面展示时间比数据库少8个小时的主要内容,如果未能解决你的问题,请参考以下文章
查询 SQL 时,传递给查询的时间比我设置的时间少 2 小时。为啥?