date類型是oracle中存儲日期類的一種常用類型,其處理也是在資料庫使用中比較多需要註意的地方。如我們可以使用to_char函數將其轉化為任意時間格式的字元串,也可使用to_date函數轉化相應的字元串為日期格式。 本篇主要介紹這樣一種使用情況。 問題描述:欄位保存為帶有時分秒格式的日期形式,現 ...
date類型是oracle中存儲日期類的一種常用類型,其處理也是在資料庫使用中比較多需要註意的地方。如我們可以使用to_char函數將其轉化為任意時間格式的字元串,也可使用to_date函數轉化相應的字元串為日期格式。
本篇主要介紹這樣一種使用情況。
問題描述:欄位保存為帶有時分秒格式的日期形式,現需要查詢某天或某日期區間內數據,即查詢條件無時分秒。
問題分析:由於保存格式自帶時分秒,而當使用between and時查詢某天或日期區間內數據時,實際會查詢到開始時間0點到結束時間0點之間的數據,從而導致查詢數據丟失問題。
解決方案:
一、不少文章提供了這種方式,即為拼接法。形如
select * from * where $$$ between to_date('16/01/2018 00:00:00', 'dd/MM/yyyy hh24:mi:ss') and to_date('16/01/2018 23:59:59', 'dd/MM/yyyy hh24:mi:ss')
其中
16/01/2018 00:00:00,
16/01/2018 23:59:59
均為程式傳入數據,本方法簡單易懂。
二、使用oracle的to_date、to_char配合使用。形如
select * from * where (to_date(to_char($$$,'dd/MM/yyyy'),'dd/MM/yyyy') Between to_date('16/01/2018', 'dd/MM/yyyy') AND to_date('16/01/2018', 'dd/MM/yyyy'))
這種方法十分方便,特分享。