早上好,
我正在尝试为Oracle寻找工作日的替代方法,由于某些原因,我们的版本不能识别工作日功能。它一直抛出一个错误,
WeekDay:无效的标识符。
我尝试在Where语句中使用它:
Where
Weekday(OR_Log.Surgery_DAte) not in (1,7)
排除周六或周日的手术。这是为了将代码从Teradata更新到Oracle。
Oracle V.12C
任何帮助都将不胜感激。
发布于 2019-08-14 17:18:20
您的Oracle版本不能识别“工作日”,因为它不是Oracle function。
您可以使用the to_char()
function获取日期数字,但它依赖于NLS设置,所以不回复它会更安全。日期名称也依赖于NLS语言,但至少可以作为函数调用的一部分被覆盖:
where to_char(OR_Log.Surgery_Date, 'Dy', 'NLS_DATE_LANGUAGE=ENGLISH') not in ('Sat', 'Sun')
'Dy'
格式化元素is described in the documentation以及所有其他元素。请注意,'DY'
以大写形式提供日期缩写,'Day'
或'DAY'
以混合/大写形式提供完整的日期名称;但默认情况下,这些名称用空格填充(其他语言中的缩写也是如此);但如果您希望完整的日期名称具有可读性,则可以添加修饰符:
where to_char(OR_Log.Surgery_Date, 'FMDay', 'NLS_DATE_LANGUAGE=ENGLISH') not in ('Saturday', 'Sunday')
https://stackoverflow.com/questions/57499124
复制相似问题