【问题标题】:How to convert a unix timestamp (INT) to monetdb timestamp ('YYYY-MM-DD HH:MM:SS') local time format如何将 unix 时间戳 (INT) 转换为 monetdb 时间戳 ('YYYY-MM-DD HH:MM:SS') 本地时间格式
【发布时间】:2013-04-18 23:35:45
【问题描述】:

Q1:我想将 unix 时间戳 (INT) 转换为 monetdb 时间戳 ('YYYY-MM-DD HH:MM:SS') 格式 但它给了我格林威治标准时间而不是我的实际时间。

当我这样做时

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”

【问题讨论】:

  • 为第二季度创建一个新的单独帖子 - 这是一个不相关的问题。谢谢!
  • 好的,删除其他问题

标签: sql timezone epoch monetdb


【解决方案1】:

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

我找到了this page on Temporal data types。基于此,我可以得出结论,MonetDB 中的 timestamp 始终旨在引用 UTC/GMT 时间 - 这与其他系统一致。

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

SET TIME ZONE INTERVAL '1' HOUR TO MINUTE

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

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

本页还有一些其他功能,不做过多解释。一个看起来很有希望满足您需求的是LOCALTIMESTAMP。也许这会考虑当地时区,这似乎是您正在寻找的。​​p>

我找不到任何特定于 MonetDB 日期/时间/时区处理的其他详细信息。文档似乎相当不完整。您可能想联系他们的邮件列表。

【讨论】:

  • 是的,我试过 SET TIME ZONE INTERVAL '1' HOUR TO MINUTE;并设置本地时区;但给出了相同的输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 2013-08-16
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多