我在这里有一个示例语句:
WHERE e.modified_date::DATE between '2013-04-02'::DATE
AND '2013-04-02'::DATE注意:
这些日期实际上是可变的。
在pgAdmin中,运行以下命令将得到以下示例表:
username modified_date
Sample 2013-04-02
Sample1 2013-04-02这就是我想要的结果。
但是,从Java调用proc将不会产生任何结果。更改第二个日期将返回上一个示例表。如果日期小于第二个变量,则PostgreSQL似乎正在计算该日期。我是不是遗漏了什么?
注:modified_date为timestamp
发布于 2013-04-11 10:02:15
列详细信息:
modified_date:TIMESTAMP
下面是在modified_date字段中插入的实际值
modified_date
不带时区的时间戳
2013-04-02 14:05:45.8611
2013-04-02 14:09:14.5422
简单解释为什么使用WHERE子句的测试过程
WHERE e.modified_date >= '2013-04-02'::TIMESTAMP
AND e.modified_date <='2013-04-02'::TIMESTAMP不返回任何内容:
String值'2013-04-02'转换为TIMESTAMP数据类型将导致TIMESTAMP WHERE子句验证字段modified_date (参见值)是否大于或等于'2013-04-02 00:00:00';另一方面,将以false'2013-04-02 00:00:00'子句验证字段< WHERE >D20(参见值)小于或等于'2013-04-02 00:00:00';,该字段将作为false返回
此解释仅显示当且仅当modified_date恰好为'2013-04-02 00:00:00'时,SELECT语句才会返回与WHERE子句对应的值
至于这个WHERE子句:
WHERE e.modified_date::DATE BETWEEN '2013-04-02'::DATE
AND '2013-04-02'::DATE将modified_date和String值转换为DATE数据类型将产生下列值:
modified_date as TIMESTAMP = '2013-04-02 14:05:45.8611'
modified_date as DATE = '2013-04-02'
modified_date as TIMESTAMP = '2013-04-02 14:09:14.5422'
modified_date as DATE = '2013-04-02'
String value as STRING = '2013-04-02'
String value as DATE = '2013-04-02'
注意:
这也可以在不将String值强制转换为DATE数据类型的情况下完成。将String转换为我的部分是为了验证目的。
为了回答我的问题,请使用WHERE子句:
WHERE e.modified_date::DATE between '2013-04-02'::DATE
AND '2013-04-02'::DATE没有返回任何内容是因为我调用的测试存储过程使用了错误的WHERE子句。
https://stackoverflow.com/questions/15875034
复制相似问题