あなたが何をしようとしているのか完全にはわかりませんが、おそらくこのようなものですか?
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
ください。