updated_date = 08-Jun-2010;
Run Code Online (Sandbox Code Playgroud)
我有这样的查询
select * from asd whre updated_date <= todate('08-Jun-2010', 'dd-MM-yy');
Run Code Online (Sandbox Code Playgroud)
但我没有得到任何结果.它只适用todate于2010年6月9日...
即我的equalto操作员工作不正常.
为什么会那样?
Vin*_*rat 25
在Oracle中,DATE是一个时间点.它总是有一个时间组件,精度与秒.todate('08-Jun-2010', 'dd-Mon-yyyy')在Oracle中是一样的todate('08-Jun-2010 00:00:00', 'dd-Mon-yyyy hh24:mi:ss').因此,如果您选择截至该日期的行,那么当天时间组件不等于的那一行将不会获得任何行00:00.
如果你想选择所有行,包括08-JUN-2010,我建议使用:
< to_date('09-06-2010', 'dd-MM-yyyy')
Run Code Online (Sandbox Code Playgroud)
要么
<= to_date('08-06-2010 23:59:59', 'dd-MM-yyyy hh24:mi:ss')
Run Code Online (Sandbox Code Playgroud)
注意 - 我更正了您的日期格式:MON如果您想使用缩写的月份名称,则需要使用.我建议使用MM,以便当有人更改其客户端设置(NLS_DATE_LANGUAGE)时,您不会收到错误.也更喜欢使用YYYY而不是YY.
Suj*_*jee 13
检查一下,
select to_date('08-Jun-2010', 'dd-MON-yyyy') from dual;
Run Code Online (Sandbox Code Playgroud)
它等于2010-06-08 00:00:00.注意时间.
所述updated_date具有时间部分.要包含它们,请使用此查询,
select * from asd where trunc(updated_date) <= to_date('08-Jun-2010', 'dd-MON-yyyy');
Run Code Online (Sandbox Code Playgroud)
TRUNCdate参数的默认函数将删除时间.
请参阅Trunc