2017-08-28 76 views
1

我的问题是显示星期几而不是日期。此刻的作品:SQL:将日期转换为星期几不起作用

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,但我的尝试修复它并没有工作。

+1

SQL Server不具备的功能'TO_CHAR()',你的意思是甲骨文? – HoneyBadger

+2

另外,'不起作用'不是问题描述。 *为什么*没有这些查询工作?你是否在'group by'中添加了'datepart'函数? – HoneyBadger

+0

是啊对不起,我的意思是甲骨文, – Marklord96

回答

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个字母。

+0

虽然这不等同于原始查询。原始查询按日期分组。此版本将通过将所有星期一放在同一组中进行汇总(不管日期如何)。也许这是OP想要的,但目前还不清楚。 – mathguy

+0

我想这就是他的意图,因为你可以看到他试图将这一行转换为其他东西(SUM(postQuantity))remaind。@mathguy – sagi

+0

但是GROUP BY子句也是如此 - 他只是试图改变SELECT。在任何情况下,这种怀疑总是值得质疑的,我只是在原始问题的评论中询问了OP。 – mathguy

0

可以使用DATENAME函数,如果它是在SQL

SELECT DATENAME(WEEKDAY,[Date]) 
FROM Table1 

在Oracle

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

感谢您的快速回答 – Marklord96