首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QlikView和时区

QlikView和时区
EN

Stack Overflow用户
提问于 2017-04-08 14:57:13
回答 2查看 2.1K关注 0票数 1

为什么这个节目在同一时间出现了两次:

代码语言:javascript
复制
=Now() & ' ' & TimeZone() & '\n' & ConvertToLocalTime(Now(), 'UTC') & ' UTC'

这表明:

代码语言:javascript
复制
2017-04-08 07:53:27 GMT-08:00
2017-04-08 07:53:27 UTC

我试图有条件地格式化一个枢轴表表达式,基于它的开始时间戳是否“在未来”。所讨论的字段是正确的(ConvertToLocalTime([Start Time], 'UTC')显示正确的时间戳),并且本地时间也是正确的,但是我不能准确地将本地非UTC时间与来自不同时区的其他时间进行比较。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-20 13:11:33

在帮助文件中,您会注意到这是将UTC或GMT时间戳转换为本地时间的双重值。

因此,使用情况如下:

代码语言:javascript
复制
=ConvertToLocalTime(UTC(), 'GMT-05:00')

以你为例:

代码语言:javascript
复制
=ConvertToLocalTime(UTC(), TimeZone() ) & ' ' & TimeZone() & '\n' & UTC() & ' UTC'

帮助文件来源:http://help.qlik.com/en-US/qlikview/12.1/Subsystems/Client/Content/Scripting/DateAndTimeFunctions/converttolocaltime.htm

票数 1
EN

Stack Overflow用户

发布于 2017-04-20 17:49:29

部分问题是,我误读了文档的部分,即它需要一个格林尼治标准时间或UTC时间戳来操作。(我习惯于其他编程语言,其中时区存储在时间戳中或带有时间戳,并且可以自动调整。)

这方面的另一个方面(在最初的问题中没有说明)是,QV依赖底层操作系统获取一些时区信息,而且我认为Windows (因此,QV桌面和QV服务器)正在做一些奇怪的事情,我认为是不正确的:尽管UTC不遵守夏时制。,Windows为"UTC“和"UTC+00:00”提供了不同的时间。(如果对这种行为有有效的解释,请评论!)

代码语言:javascript
复制
ConvertToLocalTime(UTC())                      : 2017-04-20 10:12:17
ConvertToLocalTime(UTC(), "UTC")               : 2017-04-20 17:12:17
ConvertToLocalTime(UTC(), "UTC+00:00")         : 2017-04-20 18:12:17 (huh?)
ConvertToLocalTime(UTC(), "UTC+00:00", "True") : 2017-04-20 17:12:17

(上面显示了文本的双引号,用于实际函数调用的单引号。) ConvertToLocalTime()有第三个参数,ignore_dst,可以用来减轻这一点,但是由于它是一个核子选项,不能安全地应用于非UTC时区,所以如果没有其他几个检查,我就无法编程地处理时区。

底线:QV不使用时间戳存储时区。也就是说,它依赖于程序员跟踪时间戳的来源并根据需要进行转换。这意味着,如果曾经使用时区或存在问题,所有数据都应该存储在"UTC“中(而不是"UTC+00:00"),这样就可以很容易地将ConvertToLocalTime()转换成其他区域。(许多建议的TZ最佳做法适用于这里。)

关联:不是所有的数据库时间戳类型都支持QV。例如,不支持Server的datetimeoffset,因此需要手动解析才能保留时区并正确使用数值/时间戳双重。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43295608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档