Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在SQL Server中存储DayOfWeek数据_C#_Sql Server_Dayofweek - Fatal编程技术网

C# 在SQL Server中存储DayOfWeek数据

C# 在SQL Server中存储DayOfWeek数据,c#,sql-server,dayofweek,C#,Sql Server,Dayofweek,我想将DayOfWeek数据保存为SQL Server表中的一列。这可能吗?ATM我正在保存一个int并用一个switch方法转换为DayOfWeek,但是我希望我可以直接从数据库中保存和检索数据 更新 我会尽力解释的。用户创建重复事件,通常每周2次,例如,周一和周五。我想创建(在代码运行时)给定月份内的所有重复事件,因此我想在SQL中存储DayOfWeek,因为对于每个事件,用户都可以注册其他用户是否出席、是否迟到等等。。 下面是代码的一部分: 公共静态列表获取出席人数(整数年、整数月、星期一

我想将
DayOfWeek
数据保存为SQL Server表中的一列。这可能吗?ATM我正在保存一个int并用一个switch方法转换为DayOfWeek,但是我希望我可以直接从数据库中保存和检索数据

更新 我会尽力解释的。用户创建重复事件,通常每周2次,例如,周一和周五。我想创建(在代码运行时)给定月份内的所有重复事件,因此我想在SQL中存储DayOfWeek,因为对于每个事件,用户都可以注册其他用户是否出席、是否迟到等等。。 下面是代码的一部分:

公共静态列表获取出席人数(整数年、整数月、星期一、星期二)
{
var days=DateTime.DaysInMonth(年,月);
var出席率=新列表();

对于(int currentDay=1;currentDay保持将其存储为int,但您可以通过如下方式转换保存的int来摆脱开关:

DayOfWeek day = DayOfWeek.Friday;

int temp = (int)day;

day = (DayOfWeek)temp;

Console.WriteLine(day); // Friday

将其另存为日期列,并使用以下SQL函数解析工作日ID或工作日名称

使用日期可以使数据结构易于理解

SELECT Datepart(weekday, Getdate()) 
SELECT Datename(weekday, Getdate()) 
你有两个选择

  • 将日期值存储在日期或日期时间列中,查询时,使用where子句编写查询,如

    WHERE DATENAME(WEEKDAY, DateColumn ) = 'Sunday'
    
  • 但这不是一个可搜索的表达式,在更大的数据集上,查询性能会很差

  • 您还可以将周日存储在Varchar(9)列中,然后再次使用
    DATENAME()
    从插入/更新时的日期值中提取周日名称
  • 您可以为该列编制索引并编写简单的查询,如

    SELECT * FROM Table
    WHERE DateColumName = 'Sunday'
    

    此选项通常用于数据仓库环境,该环境的目标不是减少数据冗余,而是最佳读取性能。

    此上下文中
    DayOfWeek
    数据的含义可能重复?是否要保存一周中各天的名称?如果是,请将其另存为
    NVARCHAR
    。如果要保存保留
    int
    数字,但显示名称,您只需添加一个带有
    int
    s及其相应显示名称的查找表。只需存储日期。DateTime对象将告诉您该日期的道琼斯指数等。为什么是
    nvarchar
    @lewsterin?OP是意大利语(根据其配置文件),并且在意大利语中,没有一天包含unicode字符。然而,就我个人而言,我使用了一个持久化的计算列(带有一个与日期相对的表达式)存储此数据。数据从何而来?表中的
    date
    列,或另一个日期值?此工作通常使用日历表,其中包含下一个20年的日期,以及周、日、名、月、年、季度、报告期等的额外字段,使用您需要的多种语言。这样,您就可以要在例如意大利语中查找一周中的哪一天,需要在
    Date
    列中加入日历表,并检索相应的列只要数据来源(.Net System.DayOfWeek enum)正确这是众所周知的。但是,有一个整数的星期日值可能会被误解,因为并非所有文化都同意将其视为一周的第一天