2012年11月11日 星期日

Transact-SQL 預設欄位值:依某日期欄位產生星期 (Default Value:Generate Day of The Week by Another Datetime Column)


日前在某討論區回答了某位網友的一個問題:某 Table 包含 Col_A 欄位 (定義為 datetime)、Col_B 欄位 (定義為 tinyint),於 Col_A 新增一筆日期資料時,該如何讓 Col_B 自動產生 Col_A 所對應的星期值? 關於這個問題,我們可利用 Default Value 的設定來解決,舉例說明如下:



1) 建立測試資料 (請注意 Col_B 的定義方式)
create table TEST (Col_A datetime, 
                   Col_B tinyint default as datepart(weekday, Col_A))
go


2) 加入新日期資料
insert into TEST (Col_A) values('2012/11/01')
go


3) 檢查結果
select * from TEST
go


[NOTE] 在 SQL Server 中,以 Datepart 所得到的 weekday 數值所代表的意義為 -
1 = 星期日
2 = 星期一
3 = 星期二
4 = 星期三
5 = 星期四
6 = 星期五
7 = 星期六