Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
日期计算在Oracle SQL Case语句中不起作用?_Sql_Oracle_Date_Case_Weekday - Fatal编程技术网

日期计算在Oracle SQL Case语句中不起作用?

日期计算在Oracle SQL Case语句中不起作用?,sql,oracle,date,case,weekday,Sql,Oracle,Date,Case,Weekday,我正在尝试将数据集的一周开始时间从周一更改为前一个周五。总体数据将聚合到一周级别,如下所示 第一周 星期五, 星期六, 星期天, 星期一, 星期二, 星期三, 星期四 我能想到的最好的方法是一个案例陈述,它将星期五、星期六和星期天设置为下周的第一天(系统的第一天是星期一,最后一天是星期天) 我对这段代码的逻辑是:如果是周五、周六或周日,那么找到一周的第一天,并添加7,返回下周的第一天 问题在于语句“TRUNC(TRANSACTIONDATE,'IW')+7”没有在周开始时增加7天 当我询问 se

我正在尝试将数据集的一周开始时间从周一更改为前一个周五。总体数据将聚合到一周级别,如下所示

第一周 星期五, 星期六, 星期天, 星期一, 星期二, 星期三, 星期四

我能想到的最好的方法是一个案例陈述,它将星期五、星期六和星期天设置为下周的第一天(系统的第一天是星期一,最后一天是星期天)

我对这段代码的逻辑是:如果是周五、周六或周日,那么找到一周的第一天,并添加7,返回下周的第一天

问题在于语句“TRUNC(TRANSACTIONDATE,'IW')+7”没有在周开始时增加7天

当我询问

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') 

案例表达式,而不是语句。您能提供示例数据和所需结果吗?我不确定我是否完全理解“我正在尝试将数据集的一周开始时间从周一更改为上周五。”是的,我已将其添加到问题中。案例表达式,而不是语句。您能提供示例数据和所需结果吗?我不确定我是否完全理解“我正在尝试将数据集的一周开始时间从周一更改为上周五。”是的,我已将其添加到问题中。感谢您的回答!您的选择是正确的,请从双重选择中选择“”;谢谢你的回答!您的选择是正确的,请从双重选择中选择“”;返回