【发布时间】:2021-10-13 09:47:31
【问题描述】:
正如标题中所说,我希望有一个查询返回我当前时区的时间戳值(即使是夏令时!)。
my_table 是:
|timestamp|name|value|property1|property2|
|---|---|---|---|---|
|2021-08-01 00:00:00+00|10|0.44|0|0|
|2021-08-01 00:05:00+00|15|0.76|0|0|
|2021-08-01 00:10:00+00|12|0.28|0|0|
(别问我为什么不能把这张表直接放到markdown中……可能是日期的原因)
现在例如,如果我必须选择与我的时区中的一整天相对应的 24 小时,此时我的解决方案是:
SELECT timestamp AT TIME ZONE 'CEST',name,value
FROM my_table
WHERE name IN (10,11,12)
AND timestamp BETWEEN '2021-08-01 00:00:00+02' AND '2021-08-02 00:00:00+02'
ORDER BY timestamp DESC
如您所见,这里有一个问题:
- 我必须每次都指定我是 CEST 还是 CET(现在是 CEST)
- 然后我必须在日期末尾添加 +02(或 CET 中的 +01)
有办法避免这种概念上的重复吗??任何改进查询的建议都值得赞赏
命令SELECT version(); 会返回PostgreSQL 12.7
【问题讨论】:
-
timestamp字段的实际数据类型是什么(使用类型作为字段名称不是一个好主意)? -
是一个时间戳!是的,可能不是一个好主意...好叫 ty
标签: sql postgresql timezone