請幫忙看一下這條SQL語句,很簡單

[复制链接]
查看11 | 回复4 | 2006-3-24 01:00:00 | 显示全部楼层 |阅读模式
因為有到時間的比較,這樣執行不會錯:
select to_date(checktimeymd||' '||checktimehms,'yyyy/mm/dd hh24:mi:ss'),
to_date('2006/03/24 01:00:00','yyyy/mm/dd hh24:mi:ss'),to_date('2006/03/24 12:00:00','yyyy/mm/dd hh24:mi:ss')
from pgouts where ID='2006/03/240600220';
可當我進行時間的比較的時候,報年不能夠為0的錯誤,請指教,這樣比較年不行嗎:
select* from pgouts where ID='2006/03/240600220'
and to_date(checktimeymd||' '||checktimehms,'yyyy/mm/dd hh24:mi:ss')=to_date('2006/03/24 01:00:00','yyyy/mm/dd hh24:mi:ss');
謝謝
回复

使用道具 举报

千问 | 2006-3-24 01:00:00 | 显示全部楼层
看个例子就明白了
[php]
SQL> create table toms(date_str varchar2(10),
2time_str varchar2(8),
3id varchar2(20));
表已创建。
SQL> insert into toms values('2006/05/05','10:10:10','2006/05/050600220');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from toms;
2006/05/05 10:10:10 2006/05/050600220
SQL> select *from toms where id='2006/05/050600220';
2006/05/05 10:10:10 2006/05/050600220
SQL> select * from toms where id='2006/05/050600220' and to_date(date_str||' '||time_str,'yyyy/mm/dd
hh24:mi:ss') = to_date('2006/05/05 10:10:10','yyyy/mm/dd hh24:mi:ss');
2006/05/05 10:10:10 2006/05/050600220
SQL> insert into toms values(null,null,'2006/05/050600220');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from toms where id='2006/05/050600220' and to_date(date_str||' '||time_str,'yyyy/mm/dd
hh24:mi:ss') = to_date('2006/05/05 10:10:10','yyyy/mm/dd hh24:mi:ss');
ERROR:
ORA-01841: (完整) 年份值必须介于 -4713 和 +9999 之间, 且不为 0
未选定行
SQL> select * from toms;
2006/05/05 10:10:10 2006/05/050600220

2006/05/050600220
SQL>
[/php]
回复

使用道具 举报

千问 | 2006-3-24 01:00:00 | 显示全部楼层
謝謝,老兄,你太熱心了。
可以進行時間的比較,只是我的表中有非像時間形的記錄。如某一條記錄的checktimeymd為'Apr',所以出錯。
但是我還是有一點不明白,我用ID='2006/03/240600220'限制了記錄中包含有非像時間的記錄出現,可是為什么還是會報這樣的錯,難道是解釋的順序的問題?
后來我把有那些字段的記錄刪除掉,就咝谐晒α恕
回复

使用道具 举报

千问 | 2006-3-24 01:00:00 | 显示全部楼层
[QUOTE]最初由 56553655 发布
[B]謝謝,老兄,你太熱心了。
可以進行時間的比較,只是我的表中有非像時間形的記錄。如某一條記錄的checktimeymd為'Apr',所以出錯。
但是我還是有一點不明白,我用ID='2006/03/240600220'限制了記錄中包含有非像時間的記錄出現,可是為什么還是會報這樣的錯,難道是解釋的順序的問題?
后來我把有那些字段的記錄刪除掉,就咝谐晒α恕
回复

使用道具 举报

千问 | 2006-3-24 01:00:00 | 显示全部楼层
最初由 Toms_zhang 发布
[B]
我觉得可能是满足你的ID='2006/03/240600220'的纪录中,有字段checktimeymd不是时间串的纪录,你可以先检索一下看看。
[/B]

感觉应该就是这个原因吧
楼主贴出来满足条件的记录看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行