【问题标题】:SQL: Convert Date to WeekDay doesn't workSQL:将日期转换为工作日不起作用
【发布时间】:2018-02-05 19:46:28
【问题描述】:

我的问题是显示工作日而不是日期。目前可行:

SELECT
Sum(PostQuantity) AS Amount, 
to_char(PostingDate, 'dd-mm-yyyy') AS Day
FROM 
table1
GROUP BY to_char(PostingDate, 'dd-mm-yyyy') 
ORDER BY to_char(PostingDate, 'dd-mm-yyyy')

但这会显示日期。添加如下功能:

SELECT
Sum(PostQuantity) AS Amount, 
DatePart(Weekday,PostingDate) AS Day

SELECT
Sum(PostQuantity) AS Amount, 
DateName(dw,PostingDate) AS Day

行不通。我认为我的问题是在SELECT 运算符中使用了PostingDate,但我尝试修复它并没有奏效。

【问题讨论】:

  • sql server 没有函数to_char(),你的意思是Oracle吗?
  • 另外,“不起作用”不是问题描述。 为什么这些查询不起作用?您是否也在group by 中添加了datepart 函数?
  • 是的,对不起,我的意思是甲骨文,
  • 是的,我也尝试将它们添加到“分组依据”中
  • 那是什么问题?

标签: sql oracle


【解决方案1】:

我在您的代码中看不到问题,但有时尝试替代方法。试试这个:

SELECT SUM(t.postQuantity) as amount,
       TO_CHAR(t.PostingDate,'DAY') as dayOfTheWeek
FROM YourTable t
GROUP BY TO_CHAR(t.PostingDate,'DAY')

Dy 会给你前 3 个字母。

【讨论】:

  • 这并不等同于原始查询。按日期分组的原始查询。此版本将通过将所有星期一放在同一组中进行聚合(无论日期如何)。也许这就是 OP 想要的,但还不清楚。
  • 我认为这就是他的意图,因为如您所见,他试图将此行转换为其他内容(SUM(postQuantity) 仍然存在。@mathguy
  • 但是 GROUP BY 子句也是如此 - 他只是尝试更改 SELECT。无论如何,这种怀疑总是值得一问的。我刚刚在原始问题下的评论中询问了 OP。
  • 确实如此,甚至没有想到,只是想提供一个替代方案。让我们看看他的回答。
【解决方案2】:

如果 DATENAME 函数在 sql 上,则可以使用它

SELECT DATENAME(WEEKDAY,[Date])
FROM Table1

在甲骨文中

select to_char(to_date('03/09/1982','dd/mm/yyyy'), 'DY')

【讨论】:

  • 它将返回工作日名称,如周六、周日.....或周索引,如 0、1、..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2022-01-19
相关资源
最近更新 更多