0

我在数据库中有一个数据类型为日期的出生日期字段。我的 aspx 页面中有三个相同的下拉列表。一天下拉菜单,一个月下拉菜单,一年下拉菜单。如果用户只选择日和月或月和年或任何组合。如何将其插入到数据库的日期字段中。

如果用户只选择日期和月份或月份和年份或任何组合。如何将其插入数据库?

谢谢,

4

4 回答 4

2

两种选择:

  • 将日、月和年保存在数据库中的单独(可为空)字段中
  • 在数据库中保留一个DateTime字段,在未提供时用“虚拟”数据填充它,并有一个单独的字段来指示提供了哪些信息

第一个对我来说听起来更明智——这并不是说你真的可以用“1976 年某个月的 19 日”来做很多与日期相关的合理查询,这意味着你的数据准确地代表了用户指定的内容。

于 2012-07-16T09:17:51.690 回答
0

在用户选择所有字段之前,不允许用户提交答案。这是标准的方式。你可以使用验证器。或者试试这个(我不确定) 1. 保持日期字段为空。和/或

2.If (txtDate.Text = "") Then cmd.Parameters("@Date").Value = sqldatenull

于 2012-07-16T09:19:40.670 回答
0

0000 不是有效年份;首先,我将重新审视输入表单的要求,以决定什么是可选的和可能的添加验证。

如果只有年份是可选的,那么您可以简单地将 0001 存储为年份。

dt = new DateTime(Math.Max(1,dob_year), dob_month, dob_day);

如果日和/或月是可选的,则 DateTime 不是正确的数据类型,因为您无法存储空值,因此为日、月、年设置单独的字段是唯一的选择。

于 2012-07-16T09:33:56.787 回答
0

日期总是需要一天、一个月和一年,因为它指的是过去、现在或将来的实际一天。

所有日期都必须在 01/01/0001 到 31/12/9999 的范围内,因此无法存储 0000 年。

对于您的问题,有两种选择:

  • 将日、月和年存储在三个单独的字段中。
  • 以通常的方式存储日期,将日期的未指​​定部分设置为一些默认值。然后使用带有 tinyint 的第二个字段来存储三位标志,这些标志告诉您日期的哪些部分有效,哪些无效
于 2012-07-16T10:12:12.993 回答