确定 Oracle 日期是否在周末?
这是确定 Oracle 日期是否在周末的最佳方法吗?
select * from mytable
where
TO_CHAR (my_date, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') IN ('SAT', 'SUN');
Is this the best way to determine if an Oracle date is on a weekend?
select * from mytable
where
TO_CHAR (my_date, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') IN ('SAT', 'SUN');
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
从 Oracle 11g 开始,是的。我见过的唯一可行的与区域无关的替代方案如下:
As of Oracle 11g, yes. The only viable region agnostic alternative that I've seen is as follows:
不是问题的答案。但还有更多信息。还有更多有关日期的 SQL 技巧。
更多信息请参见:
to_char
函数。Not an answer to the question. But some more information. There are many more SQL tricks with date.
More here:
to_char
function.不正确!
周末的天数可以是 6 和 6。 7 或 7 和 1,具体取决于 NLS 设置。
因此,正确的测试(无论 NLS 设置如何)就是前面提到的:
is NOT correct!
The day number of weekend days may be 6 & 7, or 7 and 1, depending on the NLS-settings.
So the PROPER test (irrespective of NLS-settings) is this one mentioned before:
在我看来,最好的选择是
TO_CHAR (my_date, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') IN ('SAT', 'SUN')
In my opinion the best option is
TO_CHAR (my_date, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') IN ('SAT', 'SUN')
之前设置 NLS_TERRITORY
这样你就可以确定哪些数字是周末
set NLS_TERRITORY before
So you are sure which numbers are weekends