+ -
当前位置:首页 → 问答吧 → proc中的SQL使用to_date与NLS_DATE_FORMAT关系

proc中的SQL使用to_date与NLS_DATE_FORMAT关系

时间:2011-12-21

来源:互联网

oracle表tbl字段UDATE是DATE类型,然后在proc中使用:
EXEC SQL SELECT NAME
INTO :name
FROM TBL
WHERE UDATE = :udate
其中udate是char udate[9];定义,格式例如:21DEC11。

我的问题是为什么这里用WHERE UDATE = :udate和WHERE UDATE = to_date(:udate)都可以?这两者有何区别?
Oracle是9.2.0.7,NLS_DATE_FORMAT=DD-MON-YY,不知道是否和这个环境变量有关?谢谢!

作者: bisal   发布时间: 2011-12-21

不好意思NLS_DATE_FORMAT=DD-MON-RR

引用楼主 bisal 的回复:
oracle表tbl字段UDATE是DATE类型,然后在proc中使用:
EXEC SQL SELECT NAME
INTO :name
FROM TBL
WHERE UDATE = :udate
其中udate是char udate[9];定义,格式例如:21DEC11。

我的问题是为什么这里用WHERE UDATE = :udate和WHERE UDATE = t……

作者: bisal   发布时间: 2011-12-21

这个NLS_DATE_FORMAT其实是个OS的环境变量吧?

作者: bisal   发布时间: 2011-12-21

1 数据库可以接受默认格式的字符作为日期。

2 如果不等,最多找不到数据。

作者: forgetsam   发布时间: 2011-12-21