我有4件用戶輸入:startDate
,endDate
,startTime
,endTime
。AS400/DB2 - 將基於整數的日期和時間轉換爲時間戳?
數據庫中的日期和時間設置與以前使用的任何設置都不同。日期是自1900年12月31日以來的天數。所以是一個整數。例如,2015年10月16日,將表示爲41927.
時間以ISO格式 - 沒有小數,所以也是一個整數。所以08:00:00將是80000. 19:00:00將是190000.它基本上是hhmmss - 但有時你只有一個h。
我想將日期和時間過濾成範圍。在第一天,我只是隨便看看,有時能正常工作:
SELECT * FROM database WHERE day = 41927 AND time > startTime and time < endTime
它也可以,如果你嚴格望着天:
SELECT * FROM database WHERE day > startDate AND day < endDate
問題是當你需要找到兩次日期之間的項目有兩次,因爲它會在每天兩次之間過濾掉任何不在這兩次之間的內容。我知道有一種方法可以創建一個時間戳,但我努力將它們放在查詢中使用兩個整數。
我有什麼樣的選擇來解決這個問題?
好,很好,解決了日子,唯一的問題是秒。它們實際上並不是在幾秒鐘內 - 它們是沒有小數的ISO格式。所以07:00是25200秒,但是我的格式是'70000'。我想最好的辦法是把它分成相應的數字並進行一些乘法運算。而且,無論出於何種原因,起源時間實際上是1900-12-31,我不知道爲什麼它是以這種方式設置的。 –
到你的編輯:是的,這很好!如果有其他人遇到這種情況,應該是:select timestamp(date('1900-12-31')+ coldays days)+ (floor(coltime/10000)* 60 * 60 + mod (floor(coltime/100),100)* 60 mod(coltime,100) )seconds –
@Kaysays。 。 。我修正了邏輯。謝謝。 –