gpt4 book ai didi

postgresql - 从连接日期和时间列中获取时间戳

转载 作者:行者123 更新时间:2023-11-29 11:12:02 28 4
gpt4 key购买 nike

我在数据库中有日期和时间字段。我想通过连接日期和时间来获取时间戳。如何在 PostgreSQL 中执行此操作?

我这样做了:

SELECT EXTRACT(EPOCH FROM TIMESTAMP '2011-05-17 10:40:28');

它运行良好。

但是当我尝试替换日期和时间字段时出现以下错误:

SELECT EXTRACT(EPOCH FROM TIMESTAMP Day || ' ' || Time);
ERROR:  syntax error at or near "Day"
LINE 1: ...quest_count > 0 AND (EXTRACT(EPOCH FROM TIMESTAMP Day || ' ' || Time)) > (e...

最佳答案

标识符?

不清楚您是否在标识符中使用大写字母,这需要双引号。

另外,Day 是一个 reserved word在 SQL 中并且 - 即使在 Postgres 中允许作为标识符 - 可能需要特殊处理。我通常会避免使用保留字和基本类型名称。在任何情况下,双引号都会处理它。我的一贯建议是使用永远不需要双引号的合法小写标识符。见:

datetime 类型

如果您的列 “Day” 的类型为 date并且您的列 "Time" 的类型为 time ,有一个非常简单的解决方案:

SELECT EXTRACT(EPOCH FROM ("Day" + "Time"));

您只需添加类型datetime 即可获得时间戳[无时区]
提取纪元与您的问题本身无关。 date + time 结果是 timestamp,就是这样。

字符串类型

如果您正在谈论字符串文字或 text/varchar 类型的列,请使用:

SELECT EXTRACT(EPOCH FROM ('2013-07-18' || ' ' || '21:52:12')::timestamp);

或:

SELECT EXTRACT(EPOCH FROM cast('2013-07-18' ||' '|| '21:52:12' AS timestamp));

您的表单有效:

  
   SELECT EXTRACT(EPOCH FROM TIMESTAMP ('2013-07-18' || ' ' || '21:52:12'));
  

This would work (note the double-quotes):

SELECT EXTRACT(EPOCH FROM "timestamp" ('2013-07-18' || ' ' || '21:52:12'));

The manual about type casts :

It is also possible to specify a type cast using a function-likesyntax:

typename ( expression )

However, this only works for types whose names are also valid asfunction names. For example, double precision cannot be used this way,but the equivalent float8 can. Also, the names interval, time, andtimestamp can only be used in this fashion if they are double-quoted,because of syntactic conflicts. Therefore, the use of thefunction-like cast syntax leads to inconsistencies and should probablybe avoided.

大胆强调我的。
使用前两种语法变体之一。

关于postgresql - 从连接日期和时间列中获取时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17725418/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com