sql - 从 UTC 日期和时间获取时间戳

标签 sql postgresql

我有一个表格,其中包含带时区的日期和时间。

date_time_table
+------------+--------------+
|   date_t   |   time_tz    |
+------------+--------------+
| 2016-05-13 | 23:00:00 -02 |
| 2016-05-14 | 13:00:00 +06 |
+------------+--------------+

之后我运行 SQL 查询“UTC”时间

SELECT timetz AT TIME ZONE 'UTC' FROM date_time_tz

结果是:

+--------------+
|   time_tz    |
+--------------+
| 01:00:00 +00 |
| 07:00:00 +00 |
+--------------+

我也可以编写 SQL 结合 date_t 和 time_tz 来计算日期吗?

我期望的结果是:

+------------+------------+
|      date_time_tz       |
+------------+------------+
| 2016-05-14 01:00:00 +00 |
| 2016-05-14 07:00:00 +00 |
+------------+------------+

我尝试:

SELECT concat(date_t , ' ' ,time_tz) AT TIME ZONE 'UTC' FROM date_time_table

但它不起作用。

最佳答案

如果列是datetime类型:

select (current_date + current_time) at time zone 'UTC';
          timezone          
----------------------------
 2016-07-12 12:06:00.239396

如果这些列是文本:

select ('2016-01-01'::date + '23:00:00 -02'::timetz) at time zone 'UTC';
      timezone       
---------------------
 2016-01-02 01:00:00

关于sql - 从 UTC 日期和时间获取时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38327963/

相关文章:

postgresql - 将 View 从 Postgres 复制到 AWS DMS 上的 Postgres

string - 非常奇怪的列字符串 "single-quote-comment-brace-time-char"- postgres 选择中的错误替换 - 可能仅与 JDBC 相关

sql - 在 select 语句中使用行值作为列

mysql - 插入不存在的值

mysql - SQL 查找并用通配符替换

sql - 为什么我的表从 pg_catalog.pg_class 中消失了? (或者,如何找到主键列?)

SQL 比较工具

sql - 带有分组依据和排序依据的mysql查询

postgresql - 无法连接到 PostgreSQL 数据库

ruby-on-rails - Rails - 数据库迁移最佳实践