我有一個DOJ學生表(加入日期)柱,它的類型,現在設置爲DATE
中,我已經存儲在dd-mon-yy
格式的記錄。
不完全是,DATE
數據類型沒有格式;它作爲7-bytes(年份爲2個字節,月份,日期,小時,分鐘和秒鐘各爲1個字節)內部存儲在表格中。您正在使用的用戶界面(即SQL/PLUS,SQL Developer,Toad等)將處理從其二進制格式到可讀格式的DATE
的格式。在SQL/Plus(或SQL Developer)中,此格式基於NLS_DATE_FORMAT
session parameter。
如果僅使用日,月和年輸入DATE
,則時間分量(可能)將被設置爲00:00:00
(午夜)。
我有一個IN參數在運行時與日期作爲字符串傳遞或說varchar和它的dd/mm/yyyy
格式。如何在日期比較和提取結果?
假定時間部分爲您司法部列始終午夜則:
SELECT COUNT(*)
FROM students
WHERE doj = TO_DATE(your_param, 'dd/mm/yyyy')
如果它並不總是半夜然後:
SELECT COUNT(*)
FROM students
WHERE TRUNC(doj) = TO_DATE(your_param, 'dd/mm/yyyy')
或:
SELECT COUNT(*)
FROM students
WHERE doj >= TO_DATE(your_param, 'dd/mm/yyyy')
AND doj < TO_DATE(your_param, 'dd/mm/yyyy') + INTERVAL '1' DAY
來源
2017-04-19 20:04:08
MT0
很好的答案..你可能想補充一點,'TRUNC(doj)'選項會阻止Oracle使用'doj'上的大多數索引,這就是爲什麼你的最後一個選項經常在實踐中看到,儘管它更長並且更復雜。 –