我有一个列(完成日期),我需要执行以下操作
select *
from orders
where completeddate > '01-01-2013'
问题是该字段中的日期如下(下图)
25-FEB-08 12.00.00.000000000 AM
列的格式是
TIMESTAMP(6)
如何设置查询以返回完成日期大于01-01-2013的行
答案 0 :(得分:1)
您尚未指定所使用的DBMS,但几乎所有这些都将日期存储为数字。您看到的格式几乎肯定是客户对日期的解释,与日期的实际存储方式无关。
大多数DBMS都能够将日期的标准字符串表示转换为数字日期值。可能的问题是您没有使用标准日期格式。您应该使用'2013-01-01'或'01 / 01/2013'。根据我的经验,YYYY-MM-DD(ISO 8601和RFC 3339)是最不明确且最受支持的格式。如果您非常喜欢MM / DD / YYYY(主要是North American representation),那么您通常需要使用反斜杠。
答案 1 :(得分:1)
试试这个
select *
from orders
where completeddate > CONVERT(DATETIME, '01-01-2013', 105)
105 dd-MM-yyyy
答案 2 :(得分:0)
在比较之前,您需要将字符串'01 -01-2013'转换为数据库日期对象。不知道数据库的类型是什么,但是所有数据库都应提供将日期对象转换为字符串和从字符串转换的功能,您可以使用以下内容:
where completeddate > TO_DATE('01-01-2013', 'DD-MM-YYYY')
希望这有帮助。
答案 3 :(得分:-1)
SELECT CAST(your_timestamp_field AS DATETIME) FROM orders WHERE completeddate > '2013-01-01'