• ベストアンサー

日付型のフィールドに空白を入れる方法を教えてください

ASP(VBScript)でSQLサーバにINSET INTO文を使ってデータを格納しているのですが、日付の部分がNULLの時、「1900/1/1」が入ってしまいます。 そのまま、空白を入れる方法はどうやったらよろしいのでしょうか? TABLE1の内容は 番号|内容|日付です。 INSERT INTO TABLE1 VALUES ( 1, 'あいう', '') 結果 1|あいう|1900/1/1

質問者が選んだベストアンサー

  • ベストアンサー
  • selenity
  • ベストアンサー率41% (324/772)
回答No.3

あとは、プログラムの書き方次第ですね、、、 If hensu=Null Or hensu="" Then dt = "NULL" Else dt = "'" & hensu & "'" End IF E_SQL = "INSERT INTO TABLE1 VALUES & _ "( 1,'あいう', " & dt& ")" の様に書きます。

ssugi
質問者

お礼

ありがとうございました。 お手をわずらわせてすみません。 参考にさせていただきます。

その他の回答 (2)

  • Hk2001
  • ベストアンサー率48% (24/49)
回答No.2

日付型に 空白(ブランク)はダメです。 NullならOkですが。ということでNullにするということで回答します。 空白 =>'' じゃなくて Null =>Null にしてみたら? ASPは、Accessでしかやったことないですけど VBでSqlServerやったときは、たしかに  INSERT INTO TABLE1 VALUES ( 1, 'あいう', '') で 1900/1/1 になりました。 なんで INSERT INTO TABLE1 VALUES ( 1, 'あいう', Null) でどうですか? 注意点は 空白('')だったら Nullに置き換えが必要になります。

ssugi
質問者

お礼

ありがとうございます。置き換えを考えてみます。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

空白を入れることは不可能です。 時刻型(datetime型)のフィールドへ、空白(' ') という文字を代入することはできません。 代入しようとしても無視されます。 内部で空値に変換されているようです。 あなたがいれたいのは空値またはヌルでしょう。 空白と空値は異なるものです。 また、空値とヌルも異なります。 Datetime型へ空値を入れた場合 「1900/1/1 00:00:00.000」が代入されます。 これを避けるには VALUES ( 1, 'あいう', '') ではなく VALUES ( 1, 'あいう', NULL) と入力しましょう。

ssugi
質問者

お礼

ありがとうございます。出来ました。 ずうずしく、もう少しお聞きしたいのですが、 hensu = Null E_SQL = "INSERT INTO TABLE1 VALUES ( 1,'あいう', '" & hensu & "')" という感じだとやっぱり「''」になってしまうので、変数でもちたいときはNullの情報が入ったときは文書を変えなければならないのでしょうか?それとも、書き方に問題があるのでしょうか? ご回答いただけたら幸いです。

関連するQ&A