1

以下是我在 postgres 中的查询

select dns_time,update_time from dns_lookup where update_time=current_date;

这里 update_time 是带时区的时间戳类型。我也试过这个。

select dns_time,update_time from dns_lookup where update_time like current_date; 

然后也没有结果。我有 current_date 值的记录。但它没有向我显示任何记录。如何将时间戳与时区值与 current_date 进行比较。请帮助我谢谢。

4

2 回答 2

6

首先:LIKE在日期或时间戳列上没有任何意义。

Atimestamp包含时间部分,因此与普通的比较date不起作用。您需要通过将其转换为日期来从时间戳中删除时间:

where cast(update_time as date) = current_date;

请注意,这将使索引的使用无效update_time。如果这是一个问题,您可以基于该表达式创建一个基于函数的索引。

于 2013-06-07T07:36:07.820 回答
2

您可能正在尝试将timestamp字段与Date字段进行比较。

尝试将时间戳转换为日期

select dns_time,update_time from dns_lookup where update_time::Date=current_date;

希望这可以帮助。

于 2013-06-07T07:53:08.257 回答