gpt4 book ai didi

sql - 无论 NLS 设置如何,工作日数

转载 作者:行者123 更新时间:2023-12-04 20:15:30 27 4
gpt4 key购买 nike

我正在寻找一种最简单的方法来确定 oracle 中 DATE 值的工作日编号,与 NLS 设置无关。

Monday  -> 1
Tuesday -> 2

Sunday -> 7

有什么想法吗?

最佳答案

ISO 周从星期一开始;他们不使用 NLS 设置。我认为这个表达是可靠的。

1 + trunc(your_date) - trunc(your_date, 'IW')

显示算术是如何工作的。 . . current_date 是星期三。

select current_date as cur_date
, trunc(current_date) as trunc_cur
, trunc(current_date, 'IW') as trunc_iso
, trunc(current_date) - trunc(current_date, 'IW') as date_diff
, 1 + trunc(current_date) - trunc(current_date, 'IW') as dow
from dual

CUR_DATE TRUNC_CUR TRUNC_ISO DATE_DIFF DOW
June 19 2013 16:01:51+0000 June 19 2013 00:00:00+0000 June 17 2013 00:00:00+0000 2 3

一般来说,如果您找不到一个可以合理地满足您期望的表达式,您可以随时使用表格。 (也许还有一个将 SQL 与底层实现隔离的函数。)

所以你总是可以使用类似的东西

create table weekday_numbers (
weekday char(3) not null primary key,
weekday_num integer not null unique
check(weekday_num between 1 and 7)
);

insert into weekday_numbers values ('Mon', 1);
...

关于sql - 无论 NLS 设置如何,工作日数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17195031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com