2009-12-07 6 views
2

Пожалуйста, дайте мне знать, как я могу найти, если это воскресенье по данной дате?Поиск дня в T-SQL

EDIT:

Из ответов другое дело приходит на ум: Как найти то, что это первый день недели?

ответ

3

Используйте функцию "datename":

print datename(weekday, '11/29/2009') 

или с переменной:

declare @date smalldatetime 
set @date = '12/25/2008' 
select datename(weekday, @date) 
+0

См. Ссылку MSDN для Функция DATENAME - http://msdn.microsoft.com/en-us/library/ms174395.aspx – kristian

2
SELECT DATEPART(dw,theDateRow) AS dateOfWeek FROM someTable 

с.в. означает день недели

если с.в. = 0, это воскресенье.

+4

dw = 0 это воскресенье не обязательно верно, это зависит от того, что вы установили как DATEFIRST (http://msdn.microsoft.com/en-us/library/ms181598.aspx) – kristian

0

A) воскресенье Проверить

SELECT 
CASE WHEN DATENAME(WEEKDAY, GETDATE()) != 'Sunday' 
    Then 'It is ' + CAST(DATENAME(WEEKDAY, GETDATE()) AS VARCHAR(10)) 
    Else 'It is ' + CAST(DATENAME(WEEKDAY, GETDATE()) AS VARCHAR(10)) 
END 'Day is' 

Выход:

Day is 
It is Saturday 

B) Найти первый день недели

SELECT 
DayName = DATENAME(WEEKDAY, 
     DATEADD(DD, 1 - DATEPART(DW, CONVERT(VARCHAR(10), GETDATE(), 111)), 
     CONVERT(VARCHAR(10), GETDATE(), 111))), 
Date = DATEADD(DD, 
     1 - DATEPART(DW, CONVERT(VARCHAR(10), GETDATE(), 111)), 
       CONVERT(VARCHAR(10), GETDATE(), 111)) 

Выход:

DayName Date 
Sunday 2009-12-27 00:00:00.000 
0

Чтобы найти то, что это первый день недели вы используете:

print @@ datefirst

Это вернет число от 1 до 7, где 1 = понедельник, 2 = вторник ... 7 = воскресенье. Вы можете изменить то, что считается первым днем ​​недели (на SQL, например) с помощью:

набор DATEFIRST = 1

Это установит первый день в понедельник. По умолчанию для SQL установлено значение 7 (воскресенье) в США.

Смежные вопросы