我有一個使用日期的表,需要在某個日期之間回傳行。
列名稱為 tg_konfi,列格式為 DATE,tg_konfi 日期為 02-FEB-21。
我試過這個
SELECT * From table where to_date(tg_konfi,'DD-MON-YY') between to_date('2021-01-01','YYYY-MM-DD') and to_date('2021-10-07','YYYY-MM-DD');
并且它什么都不回傳。我錯過了什么,還是我做錯了?
uj5u.com熱心網友回復:
與tg_confi日期資料型別列一樣,不要to_date在該列上使用。
使用以下查詢:
SELECT *
From table
where tg_konfi between to_date('2021-01-01','YYYY-MM-DD')
and to_date('2021-10-07','YYYY-MM-DD');
uj5u.com熱心網友回復:
日期沒有格式 - 它以 7 位元組(代表世紀、世紀年、月、日、小時、分鐘和秒)在內部存盤到資料庫中,直到您使用的任何用戶界面(即 SQL/Plus、SQL Developer、Java 等)嘗試將其顯示給您,即用戶,即將其轉換為您認為有意義的內容(通常是字串),即日期具有格式(以及該轉換由用戶界面完成,而不是由資料庫完成)。
如果您的值都是DATE資料型別,那么這意味著您無需擔心任何格式 - 因為它們在資料庫中沒有格式。
最簡單的方法是使用日期文字:
SELECT *
FROM table
WHERE tg_konfi BETWEEN DATE '2021-01-01'
AND DATE '2021-10-07';
或使用TO_DATE以下方法從字串文字顯式轉換:
SELECT *
FROM table
WHERE tg_konfi BETWEEN TO_DATE( '2021-01-01', 'YYYY-MM-DD' )
AND TO_DATE( '2021-10-07', 'YYYY-MM-DD' );
這將獲得和tg_konfi之間的所有行。2021-01-01T00:00:002021-10-07T00:00:00
如果您希望范圍包括到2021-10-07T23:59:59那么您可以使用:
SELECT *
FROM table
WHERE tg_konfi >= DATE '2021-01-01'
AND tg_konfi < DATE '2021-10-07' INTERVAL '1' DAY; -- or DATE '2021-10-08'
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313694.html
