Как вы печатаете название дня с указанным номером дня в SQL Server 2005 с помощью команд SQL? - PullRequest
2 голосов
/ 26 сентября 2011

Я хочу иметь возможность указывать номер дня, например 1, 2, 3 или 7, и он будет возвращать название дня, например, воскресенье, понедельник, вторник или субботу.Я знаю, что есть возможность использовать оператор case, но я хотел бы сделать это с помощью команд SQL, это вообще возможно?

DECLARE @m VARCHAR
SET @m=1
SELECT CASE WHEN @m=1 THEN 'Sunday' END

Я уже прокомментировал этот вопрос при поиске ответа, но пользователь @harper предложил мне отправить новый вопрос с полным описанием.

РЕДАКТИРОВАТЬ: там в настоящее время ответы даются в основном для случая, кромеодин .так что теперь я снова задаю свой вопрос:

«Я хотел бы сделать это с помощью команд SQL, это вообще возможно?»

Ответы [ 4 ]

5 голосов
/ 26 сентября 2011

Попробуйте это:

declare @m varchar 
set @m=1 
SELECT DATENAME(DW,CAST(@m AS INT))
2 голосов
/ 26 сентября 2011

SQL Server Denali имеет функцию CHOOSE, которая сделает это более кратким.А пока просто используйте CASE внутри UDF.

CREATE FUNCTION dbo.WeekDay(@d int)
RETURNS VARCHAR(9)
WITH SCHEMABINDING, RETURNS NULL ON NULL INPUT
AS
BEGIN
RETURN 
(
SELECT 
    CASE @d
        WHEN 1 THEN 'Sunday'
        WHEN 2 THEN 'Monday'
        WHEN 3 THEN 'Tuesday'
        WHEN 4 THEN 'Wednesday'
        WHEN 5 THEN 'Thursday'
        WHEN 6 THEN 'Friday'
        WHEN 7 THEN 'Saturday'
    END
)
END
0 голосов
/ 20 марта 2016
SELECT DATENAME(DW,CAST(a AS INT))

Здесь мы можем изменить значение a как 0 на 6 По умолчанию с 0 понедельника по 6 воскресенье.
Если мы используем a = 7 , то оно будет рассчитано как 0 , потому что 7-7 = 0.

0 голосов
/ 26 сентября 2011
CREATE FUNCTION dbo.udf_DayOfWeek(@dtDate DATETIME)
RETURNS VARCHAR(10)
AS
BEGIN
DECLARE @rtDayofWeek VARCHAR(10)
SELECT @rtDayofWeek = CASE DATEPART(weekday,@dtDate)
WHEN 1 THEN 'Sunday'
WHEN 2 THEN 'Monday'
WHEN 3 THEN 'Tuesday'
WHEN 4 THEN 'Wednesday'
WHEN 5 THEN 'Thursday'
WHEN 6 THEN 'Friday'
WHEN 7 THEN 'Saturday'
END
RETURN (@rtDayofWeek)
END
GO

-- Call this function like this:
SELECT dbo.udf_DayOfWeek(GETDATE()) AS DayOfWeek

по умолчанию из: SQL SERVER - UDF - Получить функцию дня недели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...