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

для каждой строки в Таблице A у меня есть поле даты и номера недели. Поле даты уже заполнено, и я надеялся, что будет способ автоматически заполнить поле номера недели, а не делать это вручную.

пример даты следующий: 20111007

надеюсь, что вы можете помочь, ура :) 1005 *

1 Ответ

4 голосов
/ 02 сентября 2011

С помощью этого синтаксиса вы можете получить неделю для даты.

SELECT datepart(week, '20111007'), datepart(iso_week, '20111007')

iso_week работает только с sqlserver 2008.

Вы действительно должны рассмотреть вопрос о превращении поля недели в вычисляемый столбец. Это сделает вашу жизнь намного проще (я бы использовал это решение).

Это будет ваш синтаксис:

alter table <yourtable> add week1 as datepart(week, <yourdatecolumn>)

Если вам по каким-либо причинам будет запрещено вносить изменения в базу данных, вы можете использовать это:

UPDATE <table>
SET <weekcolumn> = datepart(week, <yourdate>)
WHERE week is null and <yourdate> is not null

Проблема в том, что при изменении даты неделя останется прежней и неделя будет недоступна до тех пор, пока не будет использован этот сценарий, если неделя не будет обновлена ​​триггером.

Вы также можете создать представление для отображения всех столбцов и добавить неделю в качестве вычисляемого поля, это также будет правильным решением. Хотя рекомендуется использовать список столбцов вместо использования wildchar (*), я использовал его, потому что я не знаю ваших столбцов.

CREATE VIEW v_yourview as
SELECT *, datepart(week, <yourdate>) week1 FROM <table>
...