嗨,我在 sql server 中有一张表,我为每个工作日添加了一位。我有一个日期属性,我想根据该日期的 dayofWeek 更新所有表来更新位。我已经阅读了一些关于 t-sql (datepart) 的内容,但我不知道该怎么做,有人可以帮帮我吗?
这是我的桌子的截图
http://i.imgbox.com/adpsLL0D.jpg
例如,在前三个记录(2012-11-04,上个月,星期日)中,我想将“prt_Dom”更新为 1。
谢谢。
嗨,我在 sql server 中有一张表,我为每个工作日添加了一位。我有一个日期属性,我想根据该日期的 dayofWeek 更新所有表来更新位。我已经阅读了一些关于 t-sql (datepart) 的内容,但我不知道该怎么做,有人可以帮帮我吗?
这是我的桌子的截图
http://i.imgbox.com/adpsLL0D.jpg
例如,在前三个记录(2012-11-04,上个月,星期日)中,我想将“prt_Dom”更新为 1。
谢谢。
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
相对重要,因为不同的文化有不同的“一周的第一天”数字。如果您需要定期做某事,那么有完全确定的方法可以提取工作日。
我不完全确定你想要做什么,但也许是这样的?
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
。