0

データベースに日付データ型の生年月日フィールドがあります。私のaspxページには、同じドロップダウンが3つあります。日、月、年に 1 つのドロップダウン。ユーザーが日と月、月と年、または任意の組み合わせのみを選択した場合。それをデータベースの日付フィールドに挿入する方法。

ユーザーが日と月、月と年、またはその組み合わせのみを選択した場合。これをデータベースに挿入する方法は?

ありがとう、

4

4 に答える 4

2

2 つのオプション:

  • 日、月、年をデータベース内の個別の (null 可能) フィールドに保持する
  • データベースにフィールドを保持し、DateTime提供されていない場合は「ダミー」データを入力し、提供された情報を示す別のフィールドを用意します

最初のほうがより賢明に思えます。「1976 年のある月の 19 日」を使用して、多くの適切な日付関連のクエリを実際に実行できるわけではありません。これは、データがユーザーが指定したものを正確に表していることを意味します。

于 2012-07-16T09:17:51.690 に答える
0

Date は、過去、現在、または未来の実際の日を参照するため、常に日、月、および年のすべてが必要です。

すべての日付は 01/01/0001 から 31/12/9999 の範囲内にある必要があるため、0000 年を保存する方法はありません。

あなたの問題には2つのオプションがあります:

  • 日、月、年を 3 つの別々のフィールドに格納します。
  • 日付の指定されていない部分をデフォルト値に設定して、通常の方法で日付を保存します。次に、tinyint を持つ 2 番目のフィールドを使用して、日付の有効な部分とそうでない部分を示す 3 つのビット フラグを格納します。
于 2012-07-16T10:12:12.993 に答える
0

すべてのフィールドを選択するまで、ユーザーが回答を送信できないようにします。それが標準的な方法です。バリデーターを使用できます。または、これを試してください(これについてはわかりません) 1.日付フィールドをnullのままにします。および/または

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 は適切なデータ型ではありません。null 値を格納できないため、日、月、年に個別のフィールドを用意することが唯一のオプションです。

于 2012-07-16T09:33:56.787 に答える