嗨,我在sql服务器中有一个表,我已经为每个星期添加了一位。我有一个属性,那就是一个日期,我想要更新所有的表,根据这个日期的dayofWeek来更新位。我读过一些关于t-sql (日期部分)的东西,但我不知道我该怎么做,有人能帮我一点忙吗?
这是我的桌子的屏幕截图
http://i.imgbox.com/adpsLL0D.jpg
例如,在前三条记录(2012-11-04,最后一个月,周日)中,我希望将"prt_Dom“更新为1。
谢谢。
发布于 2012-12-12 00:20:59
我不完全确定您想要做什么,但也许是这样的?
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。
发布于 2012-12-12 00:16:15
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]) = 3SET DATEFIRST相对重要,因为不同的文化有不同的“一周的第一天”数字。如果您需要经常做某件事,那么有一些完全确定的方法可以提取工作日。
https://stackoverflow.com/questions/13823527
复制相似问题