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