连接日期和时间字段并转换为PostgreSQL的datetime格式

16

我有一个表格,其中日期和时间字段是分开的

Table1

data           hora            id
2015-01-01    11:40:06          1 
2015-01-01    15:40:06          2
2015-01-02    15:40:06          3 
2015-01-05    10:40:06          4 
2015-01-05    15:40:06          5
2015-01-06    08:23:00          6

现在我需要在2015年01月01日12:00:00和2015年01月05日12:00:00之间查询id,应返回id 2、3、4。我正在尝试将日期和时间字段转换并连接起来,这些字段在单个DateTime字段中分开,以便使用“between”,但我无法正确使用语法,有人能给个例子吗?


只是为了确认一下:这些列被定义为“日期”和“时间”了吗? - user330315
1
使用加号运算符 +,而不是通常的连接运算符 (||)。http://www.postgresql.org/docs/current/static/functions-datetime.html - pozs
是的,日期和时间已经定义。 - csf
为什么不一开始就将它们存储为“时间戳”呢? - Craig Ringer
你好,Craig。很不幸的是,数据库已经很完善了,我无法进行更改。:( - csf
1个回答

25

它起作用了!

SELECT
    *
FROM
    tableA
WHERE
    (dataemissao + hora) BETWEEN (date '2015-01-21' + time '14:00') 
     AND  (date '2015-01-21' + time '18:00')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接