[英]Oracle SQL selecting date
使用 ANSI 日期文字
and birthdate <= date '1950-01-01'
或使用包含格式掩碼的顯式to_date
and birthdate <= to_date( '01/01/1950 00:00:00'
,'MM/DD/YYYY HH24:MI:SS' )
否則,Oracle 將嘗試使用會話的nls_date_format
設置來執行從字符串到日期的隱式轉換。 這通常會產生問題,因為不同的人、不同的應用程序等都可能會以不同的方式設置他們的 NLS 設置。 因此,您可以非常輕松地編寫適合您的代碼,但當您的隊友連接到相同的數據庫或代碼在一個工具中為您工作但由於環境配置方式不同而無法在另一個工具中工作時失敗。
您可以只使用EXTRACT
並檢查年份是否 <= 1950:
...WHERE...AND EXTRACT (YEAR FROM birthdate) <= 1950...
如果不應該包含 1950,則取 < 1950 而不是 <= 1950(您的描述告訴它應該包含,您自己的查詢不會)。
你可以試試這個,只需輸入你想要的year
,
SELECT title,lastname,birthdate,country FROM EMPLOYEES
WHERE title='Sales Representative' AND EXTRACT(YEAR FROM
TO_DATE(BIRTHDATE, 'DD-MON-YYYY')) <= 1950
ORDER BY BIRTHDATE
您可以使用嚴格小於生日的日期文字,例如
...
WHERE title='Sales Representative'
AND birthdate < date'1951-01-01'
使查詢返回包含 1950 年的所需值,而如果沒有應用轉換、轉換或函數,如果birthdate
列上有索引,您可能會受益。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.