C# 如何在sql server的日期字段中仅插入日和月、月和年或任意组合
我在数据库中有一个数据类型为date的“出生日期”字段。在我的aspx页面中有三个相同的下拉列表。一个下拉列表为天,一个下拉列表为月,一个下拉列表为年。如果用户仅选择日和月或月和年或任意组合。如何将其插入数据库的日期字段中 如果用户仅选择日和月或月和年或任何组合。如何将其插入数据库 谢谢,两个选项:C# 如何在sql server的日期字段中仅插入日和月、月和年或任意组合,c#,asp.net,sql-server-2008-r2,C#,Asp.net,Sql Server 2008 R2,我在数据库中有一个数据类型为date的“出生日期”字段。在我的aspx页面中有三个相同的下拉列表。一个下拉列表为天,一个下拉列表为月,一个下拉列表为年。如果用户仅选择日和月或月和年或任意组合。如何将其插入数据库的日期字段中 如果用户仅选择日和月或月和年或任何组合。如何将其插入数据库 谢谢,两个选项: 在数据库中的单独(可为空)字段中保留日、月和年 在数据库中保留一个DateTime字段,在未提供时用“虚拟”数据填充,并有一个单独的字段来指示提供了哪些信息 对我来说,第一个听起来更合理——你不
- 在数据库中的单独(可为空)字段中保留日、月和年
- 在数据库中保留一个
字段,在未提供时用“虚拟”数据填充,并有一个单独的字段来指示提供了哪些信息DateTime
对我来说,第一个听起来更合理——你不能用“1976年某个月的第19个月”来做很多与日期相关的合理查询,这意味着你的数据准确地代表了用户指定的内容。在用户选择所有字段之前,不允许用户提交答案。这是标准的方法。您可以使用验证器进行验证。 或者试试这个(我不确定) 1.保持日期字段为空。 和/或 2.如果(txtDate.Text=”“),则
cmd.Parameters(“@Date”).Value=sqldatenull0000不是有效的年份;首先,我将重新审视输入表单的需求,以确定哪些是可选的,哪些是可能的添加验证 如果只有年份是可选的,那么您可以简单地将0001存储为年份
dt = new DateTime(Math.Max(1,dob_year), dob_month, dob_day);
如果日期和/或月份是可选的,则DateTime不是正确的数据类型,因为您无法存储空值,因此只有为day、month、year设置单独的字段才是唯一的选项。日期始终需要一天、一个月和一年,因为它指的是过去、现在或将来的实际日期 所有日期必须在01/01/0001到31/12/9999之间,因此无法存储0000年 对于您的问题,有两种选择:
- 将日期、月份和年份存储在三个单独的字段中李>
- 以通常的方式存储日期,将日期的未指定部分设置为某些默认值。然后使用第二个带tinyint的字段存储三位标志,这些标志告诉您日期的哪些部分有效,哪些部分无效