1

我有这个查询,它返回星期几。一周中的天数为 0-6(周一至周五)。

select ID, DayOfWeek from MyTable

ID    DayOfWeek
1     0
2     0
3     4

有没有办法为每个 int DayOfWeek 替换一个别名?枚举未存储在数据库中,因此我无法加入。

我希望能够编写一个查询并让它看起来像这样:

ID    DayOfWeek
1     Monday
2     Monday
3     Friday
4

4 回答 4

8

您应该考虑将查找存储在一个新表中......但只是为了让您了解您的选项,您也可以使用该DATENAME(WEEKDAY)功能:

SELECT DATENAME(WEEKDAY, 0)

回报:

Monday

SQL小提琴

于 2013-08-07T15:37:03.257 回答
2

如果您无法存储要加入的表,则可以使用CASE

SELECT ID,
    CASE DayOfWeek
        WHEN 0 THEN 'Monday'
        WHEN 1 THEN 'Tuesday'
        ...
    END AS DayOfWeek
FROM MyTable
于 2013-08-07T15:35:08.633 回答
2

您可以尝试以下操作:

SELECT ID, DATENAME(dw, DATEADD(d, DayOfWeek, CAST('2013-08-05' AS date)))
FROM MyTable

逻辑是:

  1. 找一个你确定是星期一的日期('2013-08-05'是)
  2. 在该日期上添加DayOfWeek天数
  3. DATENAME(dw)那个日期开始

编辑

或者更简单的方式DATENAME(dw, DayOfWeek)::现场演示

于 2013-08-07T15:36:54.373 回答
1
datename(weekday, DayOfWeek) 

应该将 int 转换为名称。

于 2013-08-07T15:37:13.233 回答