【发布时间】:2012-08-27 05:41:17
【问题描述】:
我有一个 PostgreSQL 表,其中有一个名为 effective_date 的字段,数据类型是整数(纪元日期)。我想要做的是只选择具有我选择的有效日期的条目(我只想按月份查询)。我的查询如下,问题是,尽管该表确实有许多符合选择条件的条目,但它没有返回任何内容。
$query = "select *
from ". $this->getTable() ."
where pay_stub_entry_name_id = 43
AND to_char(effective_date, 'Mon') = 'Jul'
AND deleted = 0";
【问题讨论】:
-
等等,你说
effective_date的数据类型是integer吗?不是date?不是timestamp?你的问题有错误吗?如果它是一个整数,你如何期望从中得到一个日期?它是一个纪元日期(自某个日期以来的秒数)? -
@Craig 对不起我的错误。是的,这是一个纪元日期。
-
那么,
to_char会怎么做呢?您在psql中尝试过吗?让我们看看:select to_char( extract(epoch from current_timestamp), 'Mon')只是输出字符串Mon,它永远不会等于字符串Jul。所以这是你的问题,你调用了to_char的整数版本,并期望它只知道你想将整数视为日期。请参阅 psql 中的\df to_char以查看所有to_char变体。只有timestamp可以按照documentation 使用日期格式 -
@CraigRinger 谢谢它的工作。你解释得很好。 :)
标签: postgresql to-char