栏目详情
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数据类型将导致'2013-04-02 00:00:00'
- 首先,该WHERE子句验证字段modified_date(参考值)是否大于或等于'2013-04-02 00:00:00'; 另一方面,它将返回false
- 其次,该WHERE子句验证字段modified_date(参考值)小于或等于'2013-04-02 00:00:00'; 这将返回为false
这种解释仅表明,SELECT当WHERE且仅当modified_date恰好'2013-04-02 00:00:00'
至于这个WHERE条款:
WHERE e.modified_date::DATE BETWEEN '2013-04-02'::DATE
AND '2013-04-02'::DATE
将两者modified_date和String值转换为DATE数据类型将导致以下值:
modified_dateas TIMESTAMP= '2013-04-02 14:05:45.8611'
modified_dateas DATE= '2013-04-02'
modified_dateas TIMESTAMP= '2013-04-02 14:09:14.5422'
modified_dateas DATE= '2013-04-02'
String valueas STRING= '2013-04-02'
String valueas DATE='2013-04-02'
注意:
这也可以在不将String值转换为DATE数据类型的情况下完成。铸造String我的一部分是为了我的验证目的。
要回答我的问题,请使用以下WHERE条款:
WHERE e.modified_date::DATE between '2013-04-02'::DATE
AND '2013-04-02'::DATE
不返回任何东西只是我调用了使用错误WHERE子句的测试存储过程。