2012-12-04 11 views
1

我在Oracle 10g中的PL/SQL中有一個查詢,其行爲並不像我想的那樣。我100%肯定我在做一些愚蠢的,所以我很抱歉。這裏所說:在PL/SQL中的2個日期/時間之間沒有給出預期的答案

我有看起來像這樣的一個表中的一些數據:

enter image description here

然後我去了查詢,但使用時間元素,像這樣:

select * from dw_time 
where createdtime > to_date('2012/04/12 03:06:00', 'yyyy/mm/dd hh24:mi:ss') 

當這樣執行,我們得到返回的記錄,其中包括在圖像上午03時05行。所以認爲它是我檢查了to_date函數:

select to_date('2012/04/12 10:24:00', 'yyyy/mm/dd hh:mi:ss') 
from dual; 

results

現在我完全糊塗了,因爲它清楚地知道,作爲一個時間。於是,我又試了一次:

select * from dw_time 
where createdtime > to_date('2012/04/12 03:06:00', 'yyyy/mm/dd hh24:mi:ss') 

enter image description here

正如你可以看到它完全忽略了時間分量!在這一點上,我認爲是時候向這裏問問大師了!

非常感謝

邁克

+3

您的表'2012年12月4日'是否有可能意味着2012年12月4日的查詢以MM/DD/YYYY格式輸出? – valex

+0

掛上 - 你可能就在那裏...... – hydev

+0

'select to_char(createdtime,'dd-mon-yyyy hh24:mi:ss')from dw_time' –

回答

1

是否有可能在你的餐桌'12/4/2012' 是指2012年12月4日和查詢輸出的MM/DD/YYYY格式?

0

看看DB輸出的日期格式 - 這是MM/DD/YYYY - 你可以看到它的輸出:

select to_date('2012/04/12 10:24:00', 'yyyy/mm/dd hh:mi:ss') from dual; 

因此改變你的選擇:

select * from dw_time where createdtime > to_date('2012/12/04 03:06:00', 'yyyy/mm/dd hh24:mi:ss') 

您可以看到該查詢的日期輸出格式:

select * from nls_session_parameters where parameter = 'NLS_DATE_FORMAT'; 

,您可以通過此更改日期輸出格式:

alter session set NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'; 
相關問題