嗨,我有一個表在sql服務器,我已經增加了一個星期的一天。我有一個屬性是一個日期,我想更新所有的表更新位取決於這個日期的dayofWeek。我讀過一些關於t-sql(datepart)的東西,但我不知道我該怎麼做,有人可以幫我一點嗎?更新與日期部分表
這裏是我的表
http://i.imgbox.com/adpsLL0D.jpg
例如截圖,在首創三個記錄(2012年11月4日,最後一個月,週日),我想更新更新「prt_Dom」來1.
謝謝。
嗨,我有一個表在sql服務器,我已經增加了一個星期的一天。我有一個屬性是一個日期,我想更新所有的表更新位取決於這個日期的dayofWeek。我讀過一些關於t-sql(datepart)的東西,但我不知道我該怎麼做,有人可以幫我一點嗎?更新與日期部分表
這裏是我的表
http://i.imgbox.com/adpsLL0D.jpg
例如截圖,在首創三個記錄(2012年11月4日,最後一個月,週日),我想更新更新「prt_Dom」來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
。
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
是比較重要的,因爲不同的文化有不同數量的「一週的第一天」。如果需要定期執行某些工作日,則有完全確定性的方法來提取工作日。