我的表格中有以下值
Select * From TimeSheetLogs where InTimeStamp <= '1/22/2013'
当我执行上述查询时,我得到空值
但正如您所见,我有3个数据,日期字段为2013年1月22日
然后我做错了什么?
由于
答案 0 :(得分:3)
这是正确的,因为
'1/22/2013 19:21' > '1/22/2013 00:00'
答案 1 :(得分:0)
根据我对@ Zdravko的好评,你只需要投出你的日期:
Select * From TimeSheetLogs where CAST(InTimeStamp as Date) <= '1/22/2013'
答案 2 :(得分:0)
您可能需要先截断日期以删除时间部分。然后将双方转换为日期数据类型。字符串'1/22/2013'是一个字符串,而不是日期。通过查看数据,您的InTimeStamp是时间戳数据类型。您无法将日期或时间戳与字符w / out转换为char-s到日期进行比较。我不确定你使用的是什么数据库。这是您使用to_date函数在Oracle中进行转换的方法。
SELECT in_date, compare_date
FROM
(-- This is your InTimeStamp on the fly
SELECT trunc(to_timestamp('2013-01-22 16:21:19.273', 'yyyy-mm-dd hh24:mi:ss.ff')) in_date -- this is your InTimeStamp
, to_date('1/22/2013', 'mm/dd/yyyy') compare_date
FROM dual
)
WHERE in_date <= compare_date
/
Now you can compare two dates below - this is the output of above query:
in_date compare_date
---------- ------------
1/22/2013 1/22/2013
答案 3 :(得分:0)
Select * From TimeSheetLogs
where InTimeStamp <= select convert(datetime,'1/22/2013',101)