2014-01-14 85 views
0

我在圖像中顯示我的Oracle數據庫有這個DATETIME領域Oracle數據庫特定日期

enter image description here

我試圖做一個查詢返回的具體日期之間的東西,但這個查詢收益之間取得值沒有。

SELECT * 
FROM tbl_meter 
WHERE TO_DATE(DATETIME,'DD/MM/YYYY') BETWEEN '%s' AND '%s' 

我在想什麼?

編輯:

SELECT * FROM tbl_meter WHERE DATETIME BETWEEN '15/01/2014' AND '07/01/2014' 

enter image description here

+0

你在%s傳遞什麼樣的價值觀?什麼是DATETIME列的數據類型? – San

+0

哪個數據類型具有'datetime'列?如果它是'DATE'列,'like'操作符沒有任何意義(加上'date'列上的'to_date()'將其轉換爲'date'沒有意義) –

+0

%s - > dd/mm/yyyy格式。 DATETIME是數據庫中的時間戳 – FreshPro

回答

2
SELECT * 
FROM tbl_meter 
WHERE TRUNC(DATETIME) BETWEEN to_date('%s','DD/MM/YYYY') AND to_date('%s','DD/MM/YYYY'); 

Asssuming DATETIMEDATE數據類型。

如果是TIMESTAMP數據類型那麼,

SELECT * 
FROM tbl_meter 
WHERE TRUNC(CAST(DATETIME AS DATE)) BETWEEN to_date('%s','DD/MM/YYYY') AND to_date('%s','DD/MM/YYYY'); 

如果是VARCHAR,然後

SELECT * 
FROM tbl_meter 
WHERE TRUNC(To_DATE(DATETIME,'Dd/MM/YYYY HH24:MI:SS.FF6')) BETWEEN to_date('%s','DD/MM/YYYY') AND to_date('%s','DD/MM/YYYY'); 
+0

您的TIMESTAMP查詢有語法錯誤。 ora-00907失蹤parantesis – FreshPro

+0

對不起,我正在使用iPad編輯,沒有注意到你的評論..應該現在工作.. –

+0

首先%s總是必須小於第二%s嗎?否則查詢返回空 – FreshPro

2

它看起來像您使用的是相同的參數兩次。我希望你有

select * 
from tbl_meter 
where to_date(datetime, 'DD/MM/YYYY') between to_date('%s1', 'DD/MM/YYYY') and to_date('%s2', 'DD/MM/YYYY') 
+0

%s指定一個字符串變量是預期的。我將參數傳遞給%s – FreshPro

+0

%s的值是多少?如果%s是一個字符串,那麼你不應該做to_date('%s')嗎? –

+0

%s的值類似於17/10/2013和19/11/2013,但這些值來自JSON作爲字符串 – FreshPro

-1

嘗試這種方式

SELECT * 
FROM tbl_meter 
WHERE TO_DATE(DATETIME,'DD/MM/YYYY') >='%s' AND TO_DATE(DATETIME,'DD/MM/YYYY') <'%s' 
+0

之間或您的查詢使用沒有區別。 –

+0

我知道,但它只是一個想法,我們可以嘗試它是否可行 – Siva