在数据库中存储星期几

时间:2012-11-28 07:29:51

标签: sql sql-server database asp.net-mvc-3

我必须为学校做一个小项目。在数据库表中存储星期几的最佳可能性是什么?

E.g。数据备份的一周中的几天 - 我应该使用这样的列:

backupDays varchar(50)
1,5       >> monday + friday
2,3,4     >>tuesday + wednesday + thursday

我必须在我的asp.net MVC程序中使用此表,并使用MSSQL数据库。

2 个答案:

答案 0 :(得分:8)

在这种情况下(在一个字段中有7个布尔值),我们得到的二进制集只有7位长。因此,您可以在MS SQL中使用一个字节长度的字段类型 - tinyint。并使用bitwise operators来操纵它。

例如(二进制):

<00> 00000001 -Sunday

<00> 00000011 - 周一和周日

<00> 00000101 - 周二和周日

<00> 00000111 - 周一,周二和周日

您可以在此处找到详细信息和示例:

http://sqlfool.com/2009/02/bitwise-operations/

http://www.mssqltips.com/...

答案 1 :(得分:0)

在我看来,在一个字段中存储一个星期几的最佳方法是将其存储为数字(0..6)。但似乎你想在一个领域存储超过一天。显然,您不能在一个字段中存储多个值。您需要使用单独的表:

create table Course
(
  CourseId int not null primary key,
  Name nvarchar(100) not null
);

create table CourseDayOfWeek
(
  CourseDayOfWeek int not null primary key,
  CourseId int not null references Course (CourseId),
  Day int not null
);

但是,如果您确实需要在单个字段中存储多个值(您无法负担创建新表),则可以使用xml字段或字符串字段。然后,您需要手动解析该字段。