0

私はあなたの知恵が必要です。

フォームがあります。このフォームには、日付を入力するフィールドがあります。このフォームからのデータは、承認を待つテーブルに格納され、このテーブルからの情報が承認されると、最終的なテーブルに移動します。

フォームのデータは、承認待ちテーブルにフィールドごとに保存されます。承認待ちの日付の値が格納されるフィールドは、varchar null です。確定日が格納されるフィールドは、datetime null です。

ここで、フォームの日付フィールドにデータが入力されていない場合、両方のテーブルに 01/01/1970 が表示されます。

確定表を更新する手順には、次のものがあります。

ALTER PROCEDURE [dbo].[myprocedure]
  @id INT = NULL
 ,@mydate VARCHAR(8000) = NULL

AS
 SET NOCOUNT OFF;

BEGIN TRY

    UPDATE  dbo.definitive SET 
    mydate = CASE WHEN @mydate IS NULL THEN mydate ELSE CONVERT(DATETIME, @mydate, 103) END

    WHERE ( id= @id)

フォームの日付フィールドにデータが入力されていない場合、テーブルで null または空を取得するにはどうすればよいですか?

どうもありがとう!

4

2 に答える 2

1

テーブル フィールドの構造をチェックして、null 値が許可されていることを確認する必要があります (日付形式と SQL サーバーで使用できるかどうかは不明です)。その他のことは、1970 年 1 月 1 日という日付はタイムスタンプ 0 と同等であり、日付の null 値に同化できるため、簡単に管理できます。

于 2013-06-06T08:34:00.293 に答える
0

HTML フォームから値「NULL」を取得しません。文字列のみを取得します。フィールドが入力されていない場合は、空の文字列が返されます。

NULL 検出は、フィールドが空の文字列の場合に NULL を挿入しようとする必要がありますが、空の文字列がこのフィールドに対して無効であると判断した場合に限ります。VARCHAR NULLフォームデータを可能な限り元の状態で保存することが目的である場合、中間テーブルにはおそらくまったく使用しません。フォームは空の文字列を送信するため、値として NULL を使用せずに空の文字列として保存します。

最終テーブルに挿入する前のフォーム処理では、日付を検証し、無効な (修正できない) または指定されていない場合は NULL に設定する必要があります。

于 2013-06-06T09:15:29.553 に答える