如何将 unix 时间戳 (INT) 转换为 monetdb 时间戳 ('YYYY-MM-DD HH:MM:SS') 本地时间格式



Q1:我想将unix时间戳(INT)转换为monetdb时间戳('YYYY-MM-DD HH:MM:SS')格式但是显示的是GMT时间,而不是实际时间。

当我做

select (epoch(cast(current_timestamp as timestamp))-epoch(timestamp '2013-04-25 11:49:00'))

如果2013-04-25 11:49:00是我的系统当前时间,它会给出相同的差异

我试过使用

set time zone interval '05:30' HOUR TO MINUTE;

但是没有改变结果

如何解决这个问题??


例子的问题:我想转换unix时间戳1366869289,它应该在"2013-04-25 11:25:00"左右,但monetdb给出"2013-04-25 05:55:00"

对MonetDB一无所知,但对时区了解很多,我决定查看他们的文档,看看支持哪种数据类型以及如何处理转换。

我找到了这个关于时态数据类型的页面。基于此,我可以得出结论,MonetDB中的timestamp总是打算引用UTC/GMT时间-这与其他系统一致。

为了获得特定时区的值,他们提供了以下示例:

SET TIME ZONE INTERVAL '1' HOUR TO MINUTE

我假设这意味着将数据库设置为将所有时间偏移1小时,有效地将值全部放在UTC+01:00中,例如英国夏令时的偏移量。

该页面还指出了使用just和offset来调整时间值可能出现的问题(参见TimeZone标记wiki中的TimeZone != offset)。它还提供了各种已命名时区的列表。但是它没有显示如何将时区设置为其中一个命名值。此外,他们的列表似乎是专有的,不完整的。虽然乍一看,它们似乎与IANA/Olson时区数据库有相似之处——它们指定的标识符不是有效的TZDB名称。

本页还列出了一些其他的函数,没有太多的解释。一个看起来很有希望满足你需求的是LOCALTIMESTAMP。也许这将考虑到当地时区,这似乎是您正在寻找的。

我找不到任何特定于MonetDB日期/时间/时区处理的额外细节。文件似乎相当不完整。你可以联系他们的邮件列表

相关内容

  • 没有找到相关文章