2009-12-01 41 views
0

鑑於MySQL 5中的日期時間列,我想了解一週中的哪一天?如何在MySql中發現DayOfTheWeek給定日期時間?

但是,DAYOFWEEK函數在星期天返回1。

我想要1表示星期一,2星期二等,7表示星期天。

是否有一個實現此功能的單線程(可以嵌入到更大的SQL語句中)?

f(x) => y 

such that: 
    f(1) = 7 
    f(n) = n-1 for n in range [2,7] 

回答

5

一個純粹的算術公式

SELECT ((DAYOFWEEK(myDate) + 5) % 7) + 1 AS MondayBasedDOW 

雖然在SQL我們經常會解決這個問題了CASE語句(參見應答者的回答)

SELECT CASE WHEN DAYOFWEEK(myDate) = 1 THEN 7 ELSE DAYOFWEEK(myDate) -1 END 
     AS MondayBasedDOW 

現在... MySQL還提供了功能WEEKDAY()這類似於DAYOFWEEK(),但

  • 週一爲主
  • 從零開始

即星期一= 0,星期二= 1 ...星期日= 6
所以你可以只需使用

SELECT WEEKDAY(myDate) + 1 AS MondayBasedDOW 

當然,這比採用模運算;-)

1

您可以嘗試 CASE當n = 1,則7 ELSE N-END

+0

它的工作少了很多樂趣,但。真棒。 – 2009-12-01 07:55:23

相關問題