2017-08-28 50 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

相關問題