日期计算在Oracle SQL Case语句中不起作用?
我正在尝试将数据集的一周开始时间从周一更改为前一个周五。总体数据将聚合到一周级别,如下所示 第一周 星期五, 星期六, 星期天, 星期一, 星期二, 星期三, 星期四 我能想到的最好的方法是一个案例陈述,它将星期五、星期六和星期天设置为下周的第一天(系统的第一天是星期一,最后一天是星期天) 我对这段代码的逻辑是:如果是周五、周六或周日,那么找到一周的第一天,并添加7,返回下周的第一天 问题在于语句“TRUNC(TRANSACTIONDATE,'IW')+7”没有在周开始时增加7天 当我询问日期计算在Oracle SQL Case语句中不起作用?,sql,oracle,date,case,weekday,Sql,Oracle,Date,Case,Weekday,我正在尝试将数据集的一周开始时间从周一更改为前一个周五。总体数据将聚合到一周级别,如下所示 第一周 星期五, 星期六, 星期天, 星期一, 星期二, 星期三, 星期四 我能想到的最好的方法是一个案例陈述,它将星期五、星期六和星期天设置为下周的第一天(系统的第一天是星期一,最后一天是星期天) 我对这段代码的逻辑是:如果是周五、周六或周日,那么找到一周的第一天,并添加7,返回下周的第一天 问题在于语句“TRUNC(TRANSACTIONDATE,'IW')+7”没有在周开始时增加7天 当我询问 se
select "TRUNC(TRANSACTIONDATE, 'IW')+7" from transactions
我下个星期就开始了,这是正确的
这样,从星期五到星期四的所有日子都属于同一周数
你知道哪里出了问题,或者有没有更好的方法来完成我的目标
谢谢,
汤姆
编辑**
第一个数据集是我希望在
Date Day Week
4/1/2018 Monday 1
4/2/2018 Tuesday 1
4/3/2018 Wednesday 1
4/4/2018 Thursday 1
4/5/2018 Friday 2
4/6/2018 Saturday 2
4/7/2018 Sunday 2
4/8/2018 Monday 2
4/9/2018 Tuesday 2
4/10/2018 Wednesday 2
4/11/2018 Thursday 2
所以在上面,你可以看到我希望星期五/星期六/星期日进入下一周
这是当前系统日期/周数
Date Day Week
4/1/2018 Monday 1
4/2/2018 Tuesday 1
4/3/2018 Wednesday 1
4/4/2018 Thursday 1
4/5/2018 Friday 1
4/6/2018 Saturday 1
4/7/2018 Sunday 1
4/8/2018 Monday 2
4/9/2018 Tuesday 2
问题是
TO_CHAR(TRANSACTIONDATE,'DAY')
- 当您使用
时,工作日名称将填充空格字符。请尝试从双通道中选择“”代码>以查看效果'DAY'
- 函数
根据当前用户会话TO_CHAR(…,'DAY')
设置返回工作日名称。这可能是英语,也可能不是NLS_DATE\u语言
TO_CHAR(TRANSACTIONDATE, 'fmDAY', 'NLS_DATE_LANGUAGE=american') IN ('FRIDAY', 'SATURDAY', 'SUNDAY')
问题是
TO_CHAR(TRANSACTIONDATE,'DAY')
- 当您使用
时,工作日名称将填充空格字符。请尝试从双通道中选择“”代码>以查看效果'DAY'
- 函数
根据当前用户会话TO_CHAR(…,'DAY')
设置返回工作日名称。这可能是英语,也可能不是NLS_DATE\u语言
TO_CHAR(TRANSACTIONDATE, 'fmDAY', 'NLS_DATE_LANGUAGE=american') IN ('FRIDAY', 'SATURDAY', 'SUNDAY')
案例表达式,而不是语句。您能提供示例数据和所需结果吗?我不确定我是否完全理解“我正在尝试将数据集的一周开始时间从周一更改为上周五。”是的,我已将其添加到问题中。案例表达式,而不是语句。您能提供示例数据和所需结果吗?我不确定我是否完全理解“我正在尝试将数据集的一周开始时间从周一更改为上周五。”是的,我已将其添加到问题中。感谢您的回答!您的选择是正确的,请从双重选择中选择“”;谢谢你的回答!您的选择是正确的,请从双重选择中选择“”;返回