【发布时间】:2016-07-08 15:24:44
【问题描述】:
IBM Cloud(以前的 Bluemix)dashDB 服务使用 UTC 作为时区。据我所知,您无法更改该设置。我的数据来自不同的时区。
如何为我的数据(表或列)设置时区或构造/格式化我的数据,以便 dashDB 能够正确比较我的值? (例如匹配“今天”)
【问题讨论】:
-
基本上不支持在数据库架构中包含时区的时间。数据库中的所有时间都是 UTC 时间,任何转换或比较都是 DIY。
IBM Cloud(以前的 Bluemix)dashDB 服务使用 UTC 作为时区。据我所知,您无法更改该设置。我的数据来自不同的时区。
如何为我的数据(表或列)设置时区或构造/格式化我的数据,以便 dashDB 能够正确比较我的值? (例如匹配“今天”)
【问题讨论】:
答案是“时间数据不支持时区”。而stackoverflow坚持要求答案必须是30个字符或更多是愚蠢的。没有就是没有。
【讨论】:
dashDB 具有 TO_UTC_TIMESTAMP 和 FROM_UTC_TIMESTAMP 等功能,可在 UTC 和特定时区之间进行转换。以下查询返回洛杉矶/旧金山的当前时间:
SELECT from_utc_timestamp (current timestamp, 'America/Los_Angeles')
from sysibm.sysdummy1
如果您将date 包裹起来,您将获得该特定时区的当前日期(也称为“今天”):
SELECT date(from_utc_timestamp (current timestamp, 'America/Los_Angeles'))
from sysibm.sysdummy1
有许多函数可以帮助计算日期/时间,您可以从任何日期/时间值中添加/减去年/月/.../秒。我的建议是存储已转换为 UTC 的时间戳并从那里开始。
【讨论】:
查看 dashDB 知识中心,了解您可以探索 w.r.t 时区的不同选项。
https://www.ibm.com/support/knowledgecenter/search/timezone?scope=SS6NHC
【讨论】: