如何在查询中用文本替换int

时间:2013-08-07 15:31:40

标签: sql sql-server

我有这个查询,它返回一周中的几天。一周的日子是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 个答案:

答案 0 :(得分:8)

您应该考虑将查找存储在新表中......但只是为了让您了解自己的选项,您还可以使用DATENAME(WEEKDAY)函数:

SELECT DATENAME(WEEKDAY, 0)

返回:

Monday

SQL Fiddle

答案 1 :(得分:2)

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

SELECT ID,
    CASE DayOfWeek
        WHEN 0 THEN 'Monday'
        WHEN 1 THEN 'Tuesday'
        ...
    END AS DayOfWeek
FROM MyTable

答案 2 :(得分:2)

您可以尝试以下操作:

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

逻辑是:

  1. 请确定星期一('2013-08-05'是)
  2. 的日期
  3. DayOfWeek天添加到该日期
  4. 从该日期开始DATENAME(dw)
  5. 修改

    甚至更简单:DATENAME(dw, DayOfWeek)Live demo

答案 3 :(得分:1)

datename(weekday, DayOfWeek) 

应将int转换为名称。