0

テーブルに次の値があります

そこにあるDaTA

Select * From TimeSheetLogs where InTimeStamp <= '1/22/2013'

上記のクエリを実行すると、null値が取得されます

しかし、ご覧のとおり、日付フィールドが2013年1月22日の3つのデータがあります。

それでは私が間違っているのは何ですか?

ありがとう

4

4 に答える 4

3

それは正しいので

'1/22/2013 19:21' > '1/22/2013 00:00'
于 2013-01-22T20:28:44.450 に答える
0

@Zdravkoの良い答えに対する私のコメントによると、あなたはただあなたの日付をキャストする必要があります:

Select * From TimeSheetLogs where CAST(InTimeStamp as Date) <= '1/22/2013' 
于 2013-01-22T20:36:07.980 に答える
0

時間の部分を削除するには、最初に日付を切り捨てる必要があります。次に、両側を日付データ型に変換します。文字列「1/22/2013」は文字列であり、日付ではありません。データを見ると、InTimeStampはタイムスタンプデータ型です。文字を日付に変換せずに、日付またはタイムスタンプを文字と比較することはできません。使用しているデータベースがわかりません。これは、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
于 2013-01-22T21:10:28.730 に答える
0
Select * From TimeSheetLogs 
where InTimeStamp <= select convert(datetime,'1/22/2013',101)
于 2013-01-23T07:28:44.183 に答える