首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -周计算

SQL -周计算
EN

Stack Overflow用户
提问于 2011-03-13 05:13:54
回答 3查看 3.1K关注 0票数 1

我编写了一个SQL语句,它基于sysdate获取当前周。如果日期是2011年3月12日(星期六),那么交货期应该是

03/06/2011-03/12/2011

但是,在运行下面的SQL查询时,我得到了一个o/p:

03/06/2011-03/13/2011

有人能帮我找出问题出在哪里吗?谢谢

代码语言:javascript
复制
SELECT CASE
         WHEN TO_CHAR(SYSDATE,'DAY') = 'SATURDAY' THEN 
          TO_CHAR(next_day(SYSDATE-7,'SUNDAY'),'mm/dd/yyyy') || '-' ||to_char(sysdate,'mm/dd/yyyy') 
         WHEN TO_CHAR(SYSDATE,'DAY') = 'SUNDAY' THEN
          TO_CHAR(SYSDATE,'mm/dd/yyyy') || '-' ||to_char(next_day(sysdate,'SATURDAY'),'mm/dd/yyyy') 
         ELSE 
          TO_CHAR(next_day(SYSDATE-7,'SUNDAY'),'mm/dd/yyyy') || '-' ||to_char(next_day(sysdate,'SUNDAY'),'mm/dd/yyyy') 
       END weeks 
  FROM DUAL
EN

回答 3

Stack Overflow用户

发布于 2011-03-13 06:24:22

“DAY”格式是正确的,因此所有结果都是相同的长度。(我不知道甲骨文为什么这么做,我觉得很傻。)您希望查找'SATURDAY ''SUNDAY ',或者修剪结果,或者使用“FMDAY”格式。

票数 1
EN

Stack Overflow用户

发布于 2011-03-14 13:38:48

只需在查询中进行一次更改。

代码语言:javascript
复制
SELECT CASE
WHEN TO_CHAR(SYSDATE,'DAY') = 'SATURDAY' THEN
        TO_CHAR(next_day(SYSDATE-7,'SUNDAY'),'mm/dd/yyyy') || '-' ||to_char(sysdate,'mm/dd/yyyy')
       WHEN TO_CHAR(SYSDATE,'DAY') = 'SUNDAY' THEN
       TO_CHAR(SYSDATE,'mm/dd/yyyy') || '-' ||to_char(next_day(sysdate,'SATURDAY'),'mm/dd/yyyy')
       ELSE
        TO_CHAR(next_day(SYSDATE-7,'SUNDAY'),'mm/dd/yyyy') || '-' ||

to_char(next_day(sysdate,'SUNDAY')

,“mm/dd/yyyy”)

在此查询中,在其他部分,您将错误地检查星期日。

你想知道周六是周末。

所以,只要把这个星期天改为星期六,你就会得到你想要的答案(结果) :)

票数 1
EN

Stack Overflow用户

发布于 2011-03-13 05:18:29

为什么你不让你的生活更轻松

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_dayname

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_dayofweek

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5287598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档