"ORA-00936: missing expression" DATE
"ORA-00936: missing expression" on DATE
在工作中,我们正在进行从 DB2 for iSeries SQL 到 Oracle SQL 的迁移,并且正在经历一些痛苦。我仍然认为自己是 SQL 的初学者,无法弄清楚 Oracle SQL 不喜欢这个子句的地方。
CASE
WHEN YYCOL IS NULL THEN NULL
ELSE max ( DATE ( MMCOL || '/' || DDCOL || '/' || YYCOL ) )
END AS COLUMN007
使用上述子句查询时:
ORA-00936: missing expression
ELSE max ( DATE ( MMCOL || '/' || DDCOL || '/' || YYCOL ) )
^
如果可能,是否有一些易于理解的文档,用于从 DB2 for iSeries SQL 迁移到 Oracle SQL?感谢您的帮助!
你必须使用 -
CASE
WHEN YYCOL IS NULL THEN NULL
ELSE max ( TO_DATE ( MMCOL || '/' || DDCOL || '/' || YYCOL, 'MM/DD/YY' ) )
END AS COLUMN007
"so it only shows the date stamp" to_date 将提供的字符串转换为 oracle 内部二进制 DATE 数据类型,它也始终包括精确到秒的时间。但是对于 "show" 日期,该 DATE 类型必须转换回字符串。这通常通过使用 TO_CHAR、提供日期和 'format mask' 来完成。由于您没有提供,因此 oracle 被迫隐式执行,并使用 NLS_DATE_FORMAT 的有效值。如果只希望 "show" 日期,则
to_char(to_date(MMCOL||'/'||DDCOL||'/'||yycol,'mm/dd/yy'),'mm/dd/yyyy')
我鼓励您访问官方 oracle 文档并查找 to_date 和 to_char 函数。另请参阅我在 https://edstevensdba.wordpress.com/2011/04/07/nls_date_format/
上写的一篇文章
顺便说一句,请不要使用两位数的年份。 20 年前,我和成千上万像我一样的人竭尽全力防止 2000 年 1 月 1 日的崩溃。就在上周,我读了一篇文章,说从 2020 年 1 月 1 日起,用 'pivot date' 踢罐头的系统现在就要崩溃了。请停止重复我们本应在 20 年前纠正的错误。
在工作中,我们正在进行从 DB2 for iSeries SQL 到 Oracle SQL 的迁移,并且正在经历一些痛苦。我仍然认为自己是 SQL 的初学者,无法弄清楚 Oracle SQL 不喜欢这个子句的地方。
CASE
WHEN YYCOL IS NULL THEN NULL
ELSE max ( DATE ( MMCOL || '/' || DDCOL || '/' || YYCOL ) )
END AS COLUMN007
使用上述子句查询时:
ORA-00936: missing expression
ELSE max ( DATE ( MMCOL || '/' || DDCOL || '/' || YYCOL ) )
^
如果可能,是否有一些易于理解的文档,用于从 DB2 for iSeries SQL 迁移到 Oracle SQL?感谢您的帮助!
你必须使用 -
CASE
WHEN YYCOL IS NULL THEN NULL
ELSE max ( TO_DATE ( MMCOL || '/' || DDCOL || '/' || YYCOL, 'MM/DD/YY' ) )
END AS COLUMN007
"so it only shows the date stamp" to_date 将提供的字符串转换为 oracle 内部二进制 DATE 数据类型,它也始终包括精确到秒的时间。但是对于 "show" 日期,该 DATE 类型必须转换回字符串。这通常通过使用 TO_CHAR、提供日期和 'format mask' 来完成。由于您没有提供,因此 oracle 被迫隐式执行,并使用 NLS_DATE_FORMAT 的有效值。如果只希望 "show" 日期,则
to_char(to_date(MMCOL||'/'||DDCOL||'/'||yycol,'mm/dd/yy'),'mm/dd/yyyy')
我鼓励您访问官方 oracle 文档并查找 to_date 和 to_char 函数。另请参阅我在 https://edstevensdba.wordpress.com/2011/04/07/nls_date_format/
上写的一篇文章顺便说一句,请不要使用两位数的年份。 20 年前,我和成千上万像我一样的人竭尽全力防止 2000 年 1 月 1 日的崩溃。就在上周,我读了一篇文章,说从 2020 年 1 月 1 日起,用 'pivot date' 踢罐头的系统现在就要崩溃了。请停止重复我们本应在 20 年前纠正的错误。