簡體   English   中英

Oracle條款在哪里的DateTime

[英]DateTime on Where Clause Oracle

似乎有很多查詢語法可以在oracle數據庫上獲取數據,在這里我只想問一下可以正常工作的查詢,但我根本無法理解。 查詢是:

Select
....
From
...
Where
TO_CHAR(TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS') +
(create_date  / ( 60 * 60 * 24 )),
'MM/DD/YY HH24:MI:SS') = '06/30/14 21:41:11'
;

從上面的查詢可以正常工作。 但是我不明白為什么會有TO_DATE('01 / 01/1970 00:00:00','MM / DD / YYYY HH24:MI:SS(create_date /(60 * 60 * 24)),'MM / DD / YY HH24:MI:SS')

create_date字段上,它顯示UNIX日期時間,例如1404164471

有人可以解釋一下嗎?

提前致謝

TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS')將某種格式的字符串(第一個參數)(第二個參數)轉換為日期。

(create_date / ( 60 * 60 * 24 )) create_date包含秒,此表達式將它們轉換為天數(1分鍾= 60秒,1小時= 60分鍾,1天= 24小時=> 60 * 60 * 24 =一天中的秒數)。 當您在日期中添加數字時,Oracle認為該數字包含幾天,因此您需要進行此類對話。

TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS') + (create_date / ( 60 * 60 * 24 ))為您提供一個存儲在create_date但位於“傳統”格式

看來您需要將Unix時間與日期進行比較。 最好使用以下條件:

Select
....
From
...
Where create_date = trunc( (TO_DATE('06/30/14 21:41:11', 'MM/DD/YY HH24:MI:SS') 
                          - TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
                           ) * 24 * 60 * 60
                         );

外部to_char(,)從計算出的日期創建一個字符串。 這樣可以將其與字符串“ 06/30/14 21:41:11”進行比較。

在to_char內部,進行了一些計算,即添加了date值。

TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS') 
+ (create_date  / ( 60 * 60 * 24 ))

to_date函數采用字符串格式('01 / 01/1970 00:00:00')的日期值和格式字符串('MM / DD / YYYY HH24:MI:SS')來告訴它如何解釋日期值。

create_date似乎是一個以秒為單位的數字(很可能是1970年1月1日以來的秒數)。 它由一天中的秒數划分,因此將需要幾天的時間。 因此,您得到的是實際日歷值中的創建日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM