Vic*_*tor 1 sql oracle oracle9i
在Oracle中,列类型为= DATE的表中有一个列(dateColumn)select * from table.
,当我执行以下操作时,特定记录的值显示为'10/03/2010' :
SELECT *
FROM table
WHERE dateColumn < '01-JAN-11'
Run Code Online (Sandbox Code Playgroud)
什么都没有出现.当我做:
SELECT *
FROM table
WHERE dateColumn > '01-JAN-11'
Run Code Online (Sandbox Code Playgroud)
记录出现了.为什么这样做?"2010年10月10日"是第10届MArch 2010,所以显然是<2011年1月1日.
没有明确的日期格式 - 它可能因地区甚至商业而异.即使没有考虑SQL,这也是现实......
在Oracle中,将字符串作为日期进行评估的方法要求您使用TO_DATE函数:
SELECT *
FROM table
WHERE dateColumn > TO_DATE('01-JAN-11', 'DD-MON-YY')
Run Code Online (Sandbox Code Playgroud)
您需要提供格式掩码以指示Oracle如何解释您提供它的日期.
该功能在其他数据库上通常是不同的,但其他方面的体验是相同的.大多数数据库接受'YYYY-MM-DD'用于将字符串隐式转换为日期.显式转换是指您使用函数时,比如TO_DATE显式更改数据类型.