2011-09-12 18 views
2

から変換するとき、私はほぼ動作しますが、それは日付されている日付レコードが含まれていない次のOracleクエリオラクル - 日付文字列

SELECT * 
FROM table 
WHERE date_opened 
BETWEEN ((TO_DATE('2011-08-01', 'yyyy-mm-dd') - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400)) 
AND ((TO_DATE('2011-08-31', 'yyyy-mm-dd') - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400)) 

を持つ2つの日付(包括的)との間にレコードを選択2011-08- 31。何か案は?それはおそらく

UPDATE ...を私は日付文字列を変換していますどのように何かを持っている:私は本当に日付が実際にUNIXタイムスタンプであると述べている必要があります。私は86400と01-JAN-1970に

を使用していた理由は、ありがとう:)

答えて

5

の区間の上限が検索結果に含まれていない場合で、それは「あなたが構築している可能性があります上限を基準とした「排他的」フィルタである。だから、上限を1日追加するだけです。私。

AND ((TO_DATE(...) - to_date(...) + 1) * (86400)) - 1 

オラクルでは、+1は、日付時間計算で使用されると1日を加算します。

注:Ollie第が述べたようにBETWEEN .. ANDは、包含フィルタを作成しますが、あなたの算術はあなたが最終日の真夜中の後に起こったものを含んでいない秒

3

に物事を変換することにより、その動作を変更することがあります。

試してみてください。

AND ((TO_DATE('2011-09-01', 'yyyy-mm-dd') - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400) - 1) 
関連する問題