2012-07-09 96 views
0

是否有可能在DB2中查詢將文本字段中的值與當前系統日期進行比較?將字符串與系統時間進行比較

select * 
    from table 
where DOB < [current system time] 
+0

先來看看進入「文本字段」存放的日期格式.. 然後據此你可以建立你的查詢.. [「樂趣日期」(http://www.ibm.com/developerworks/data/library /techarticle/0211yip/0211yip3.html)此鏈接將有助於使用系統日期。 – 2012-07-09 20:02:06

+0

您的'文本'日期格式是什麼?另外,以字符(或數字)格式存儲日期/時間/時間戳記值是一個糟糕的主意 - 至少,您已經失去了數據類型安全性,並且取決於格式,可以可靠地對數據進行排序。 – 2012-07-09 21:38:58

+0

我只是希望能夠創建一個比較行和我正在運行的當前時間的SQL語句。這是一種懶惰的原因,但我正在研究每天更新數據的項目。而不是將我的查詢改爲每天的當天,我希望能有一種方法來比較像2012-01-01這樣的值與系統日。 – Frantumn 2012-07-09 23:43:15

回答

1

根據你的問題,我猜你的列已格式化這樣的數據:

'DD/MM/YYYY HH:MI:SS'

如果您正在使用DB2 9.7及更高版本,可以使用TO_DATE,這是很多像Oracle的TO_DATE

select 
* 
from 
table where 
date(to_date(time_stamp,'DD-MM-YYYY HH:MI:SS')) < [current system time] 

我沒有測試上面的查詢。

+1

直到OP告訴我們,沒有辦法可靠地知道存儲列的格式。您選擇顯示的特定格式(儘管不像某些格式那樣糟糕)會使數據的智能排序變得困難,所以希望使用日期值反向(即ISO)順序的內容 - 「YYYY-MM -DD'。如果是這樣,通過將當前系統時間轉換爲_text_值(這將允許使用列上的索引)而不是將所有行轉換爲日期值(不能),可以獲得更好的性能。 – 2012-07-09 21:42:27

1

我的回答結束了
WHERE BIRTH_DATE BETWEEN '1800-01-01' AND CURRENT_DATE

保留字我一直在尋找的是CURRENT_DATE。

相關問題