2016-08-17 94 views
0

如果我想2000-06-01T之間取得兩個日期之間的記錄我有表結構如下SQL查詢存儲爲鍵值對

**JobData** - Table 
--------------------------- 
    id - Number  
    key - Varchar 
    value - Varchar 



     Data: 
    ----------------- 
    ID   value    key 
----------------------------------------------- 
    21212 2010-06-11T15:00:00  Job_End 
    21213 2008-12-01T23:59:00  Job_Start 
    21214 2008-12-01T23:59:00  Job_Start 
    21215 2018-06-11T15:00:00  Job_End 
    21216 2015-06-11T15:00:00  Job_End 

:00:00,2010-06- 11T15:00:00,寫下如下查詢。

SELECT * FROM JobData jd 
WHERE 
jd.key IN ('Job_Start', 'Job_End') 
AND (jd.key = 'Job_Start' and jd.value BETWEEN '2000-06-01T:00:00' AND '2010-06-11T15:00:00') 
AND (jd.key = 'Job_End' and jd.value BETWEEN '2000-06-01T:00:00' AND '2010-06-11T15:00:00') 

但是我得到0條記錄,請有人讓我知道我失蹤的地方。

注:數據庫是ORACLE

感謝。

+0

代碼已在第一時間。你的問題不是關於「關係數據庫」或關於「數據庫管理」。 – mathguy

+0

謝謝你相應的更新:) – Raju

+0

我會建議一個鍵值存儲是這種類型的數據不正確的結構。數據庫重構將爲您節省時間和性能。幾乎肯定會值得的。 – HLGEM

回答

-1

您的查詢不正確。

SELECT * FROM JobData jd 
WHERE 
jd.key IN ('Job_Start', 'Job_End') 
AND (jd.key = 'Job_Start' and jd.value BETWEEN '2000-06-01T:00:00' AND '2010-06-11T15:00:00') 
AND (jd.key = 'Job_End' and jd.value BETWEEN '2000-06-01T:00:00' AND '2010-06-11T15:00:00') 

您應將其更改爲

SELECT * FROM JobData jd 
WHERE 
jd.key IN ('Job_Start', 'Job_End') 
AND (TO_DATE(jd.value,'YYYY-MM-DDTHH24:MI:SS') BETWEEN TO_DATE('2000-06-01T00:00:00', 'YYYY-MM-DDTHH24:MI:SS') AND TO_DATE('2010-06-11T15:00:00', 'YYYY-MM-DDTHH24:MI:SS')) 
+0

還在爲'jd.value'同時測試'Job_Start''和''Job_End''?確定downvote。 – mathguy

+0

仍然查詢沒有給出任何結果,我已正確交換列名稱,對不起有一個錯字。 – Raju

+0

@mathguy,你看到'IN'子句了嗎?這並不意味着同時存在'Job_start'和'Job_End'。檢查你對'IN'條款的理解。 – randominstanceOfLivingThing

0

當然它不會工作,因爲你要求的值既Job_StartJob_End在同一時間。如果你真的想2000-06-01T:00:002010-06-11T15:00:00之間返回的所有記錄,那麼這應該是正確的:

SELECT * 
FROM JobData jd 
WHERE jd.key IN ('Job_Start', 'Job_End') 
    AND jd.value BETWEEN '2000-06-01T00:00:00' AND '2010-06-11T15:00:00' 
+0

不要忘記錯誤了嗎?在日期字符串中:第一個有'T:00:00',應該是'T00:00:00'。 – mathguy

+0

@math傢伙好點,謝謝! –

+0

請注意在S.的觀察。Bohara對他的回答也發表了評論 - 你有jd.value和jd.key混淆了。 – mathguy