Обновление с помощью Datepart таблицы

Привет, у меня есть одна таблица на сервере sql, и я добавил по одному биту на каждый день недели. У меня есть одно свойство, которое является датой, и я хочу обновить всю таблицу, обновив бит в зависимости от дня недели этой даты. Я кое-что читал о t-sql (datepart), но я не знаю, как мне это сделать, кто-нибудь может мне немного помочь?

Вот скриншот моей таблицы

http://i.imgbox.com/adpsLL0D.jpg

Например, в первых трех записях (2012-11-04, последний месяц, воскресенье) я хочу обновить обновление «prt_Dom» до 1.

Спасибо.


person bombai    schedule 11.12.2012    source источник


Ответы (2)


Я не совсем уверен, что вы пытаетесь сделать, но, возможно, что-то вроде этого?

set language spanish
go

update dbo.MyTable
set
    prt_Lun = case when datename(dw, prt_fecha) = 'Lunes' then 0x1 else 0x0 end,
    prt_Mar = case when datename(dw, prt_fecha) = 'Martes' then 0x1 else 0x0 end,
    prt_Mie = case when datename(dw, prt_fecha) = 'Miércoles' then 0x1 else 0x0 end,
    prt_Jue = case when datename(dw, prt_fecha) = 'Jueves' then 0x1 else 0x0 end,
    prt_Vie = case when datename(dw, prt_fecha) = 'Viernes' then 0x1 else 0x0 end,
    prt_Sab = case when datename(dw, prt_fecha) = 'Sábado' then 0x1 else 0x0 end,
    prt_Dom = case when datename(dw, prt_fecha) = 'Domingo' then 0x1 else 0x0 end
where
    ...

Если ваша логика действительно настолько проста, то вам вообще не нужны столбцы prt_%, потому что вы всегда можете получить битовые значения из prt_fecha по запросу. Но я предполагаю, что вы устанавливаете здесь значения по умолчанию, которые вы можете переопределить позже, и в этом случае таблица будет иметь смысл.

И при работе с датами будьте осторожны с настройками, специфичными для культуры, такими как SET DATEFIRST и SET LANGUAGE.

person Pondlife    schedule 11.12.2012

SET DATEFIRST 1
UPDATE [tableName] SET [prt_Mar] = 1 WHERE DATEPART(dw, [prt_fecha]) = 2

В среду вы хотели бы

UPDATE [tableName] SET [column] = 1 WHERE DATEPART(dw, [prt_fecha]) = 3

SET DATEFIRST относительно важен, так как разные культуры имеют разные числа «первого дня недели». Существуют полностью детерминированные способы извлечения дня недели, если это то, что вам нужно делать регулярно.

person Matt Whitfield    schedule 11.12.2012