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

标签 sql timezone epoch monetdb

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”

最佳答案

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

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

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

SET TIME ZONE INTERVAL '1' HOUR TO MINUTE

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

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

此页面还列出了一些其他功能,不做太多解释。一个看起来很有希望满足您需求的是 LOCALTIMESTAMP .也许这会考虑到本地时区,这似乎是您要查找的内容。

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

关于sql - 如何将 unix 时间戳 (INT) 转换为 monetdb 时间戳 ('YYYY-MM-DD HH:MM:SS' ) 本地时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16208576/

相关文章:

c# - DateTime 转换为 Unix Epoch 添加 Phantom Hour

sql - 添加一个额外的列,表示前一列的最接近差异之间的差异

sql - 查看 SQL - 减去日期

javascript - 如何使用 javascript 获取用户时区的字符串表示形式?

java - 使用 Hibernate SQL 查询在日期范围内搜索文档

time - 使用 UTC 存储 unix 时间戳与字符串

php - MySQL 错误, "You have an error in your SQL syntax"

用于获取最近 12 个月内付款演变图的 MySQL 查询

mysql - 允许用户从选择框中选择 SET time_zone

javascript - 如何将 Epoch 中的日期转换为 Javascript 中的 "Y-m-d H:i:s"?