栏目详情
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_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
子句的测试存储过程。