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

TABLE1の内容は
番号|内容|日付です。

INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')

結果
1|あいう|1900/1/1

このQ&Aに関連する最新のQ&A

A 回答 (3件)

あとは、プログラムの書き方次第ですね、、、




If hensu=Null Or hensu="" Then
dt = "NULL"
Else
dt = "'" & hensu & "'"
End IF

E_SQL = "INSERT INTO TABLE1 VALUES & _
"( 1,'あいう', " & dt& ")"
の様に書きます。
    • good
    • 2
この回答へのお礼

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

お礼日時:2001/06/27 20:42

日付型に 空白(ブランク)はダメです。


NullならOkですが。ということでNullにするということで回答します。

空白 =>'' じゃなくて
Null =>Null にしてみたら?

ASPは、Accessでしかやったことないですけど


VBでSqlServerやったときは、たしかに 
INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')
で 1900/1/1 になりました。
なんで

INSERT INTO TABLE1 VALUES ( 1, 'あいう', Null)

でどうですか?

注意点は 空白('')だったら Nullに置き換えが必要になります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/06/27 18:28

空白を入れることは不可能です。


時刻型(datetime型)のフィールドへ、空白(' ')
という文字を代入することはできません。
代入しようとしても無視されます。
内部で空値に変換されているようです。

あなたがいれたいのは空値またはヌルでしょう。
空白と空値は異なるものです。
また、空値とヌルも異なります。

Datetime型へ空値を入れた場合
「1900/1/1 00:00:00.000」が代入されます。

これを避けるには
VALUES ( 1, 'あいう', '')
ではなく
VALUES ( 1, 'あいう', NULL)
と入力しましょう。
    • good
    • 1
この回答へのお礼

ありがとうございます。出来ました。
ずうずしく、もう少しお聞きしたいのですが、

hensu = Null

E_SQL = "INSERT INTO TABLE1 VALUES ( 1,'あいう', '" & hensu & "')"

という感じだとやっぱり「''」になってしまうので、変数でもちたいときはNullの情報が入ったときは文書を変えなければならないのでしょうか?それとも、書き方に問題があるのでしょうか?
ご回答いただけたら幸いです。

お礼日時:2001/06/27 18:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QINSERT INTO table(DATE) VALUES('20090101')ができません。

初めましてご教授よろしくお願いします。

Accessにレコードを追加しようとしているのですがうまくいきません。

どうもDATEというフィールドにテキスト型の'20090101'を入れようとするのがいけないみたいです。

予約語だからDATEのフィールド名を変えた方がいいことはわかっているのですが、お客様がテーブルを作成しているので変更することができません。

お客様いわくテキスト型で入るというのですがどうすれば入るのでしょうか?

ちなみにDATEフィールドはテキスト型です。

エラー内容は「INSERT INTO ステートメントの構文エラーです。」と表示されます。

Aベストアンサー

INSERT INTO table(DATE) VALUES('20090101')

INSERT INTO table([DATE]) VALUES('20090101')
にしてみてください。

Q構造が同じ別テーブルInsert Into する場合

追加クエリをVBA上のSQLで作成しています。

A.MDBとB.MDBに同名のTable_Aがあり、フィールドも同じです。。

これを重複をチェックするためにField_Aでジョインさせていますが、
テーブル名もフィールド名も同じなために区別ができません。

どのようにして区別するとよいのでしょうか?

Aベストアンサー

#1です。リンクを張って

INSERT INTO Table_A1
SELECT Table_A.*
FROM Table_A LEFT JOIN Table_A1 ON [Table_A].[ID]=[Table_A1].[ID]
WHERE ((([Table_A1].[ID]) Is Null));

みたいなSQL文でいかがでしょう

Qアクセスの日付/時刻型で標準型を選択した場合のXX/XX/XX 00:00:00の時刻部分が表示されない

アクセスデータベースについてお教え下さい。

アクセスデータベースのフィールドを日付/時刻型のGeneral Date(標準)に設定した場合、たとえば、2002/02/25 00:00:00と入力すると、00:00:00の部分が省略されてしまいますが(00:00:00でないと表示されるのですが)、00:00:00を表示させるには、どのようにしたらよろしいでしょうか

環境は:Windows2000上でAccess2000を使用しています。

Aベストアンサー

プロパティを標準→yyyy/mm/dd hh:nn:ss
と入力してください。
何かあれば補足して下さい。

QOracle 8i コンマ(,)を含むデータをinsertしたい

再度、質問させていただきます。

コンマを含むデータをinsertするにはどうしたらよいでしょうか?
例えば、次のようなテーブルを作成します。
CREATE TABLE SAMPLE
(NAMEVARCHAR( 15)NOT NULL,
ADDRESSVARCHAR(30));

そして、

insert into sample
values
(Yamada, '731 Fondren,Houston,TX');

とinsertすると当然エラーになります。”ORA-00984: ここでは列は使用できません”というエラーが返ってきます。

"731 Fondren,Houston,TX"というコンマを含むアドレスをinsertしたいのですが、どうしたらよいでしょうか?

set scan off をしてもダメで、
'[731 Fondren,Houston,TX]'という風に変えても、上と同じ”ORA-00984: ここでは列は使用できません”というエラーが返ってきます。グーグルで調べて、arrayof(text)という風にタイプを変えるのかなと試しましたが、だめでした。

何かアドバイスをお願いします。

再度、質問させていただきます。

コンマを含むデータをinsertするにはどうしたらよいでしょうか?
例えば、次のようなテーブルを作成します。
CREATE TABLE SAMPLE
(NAMEVARCHAR( 15)NOT NULL,
ADDRESSVARCHAR(30));

そして、

insert into sample
values
(Yamada, '731 Fondren,Houston,TX');

とinsertすると当然エラーになります。”ORA-00984: ここでは列は使用できません”というエラーが返ってきます。

"731 Fondren,Houston,TX"というコンマを含むアドレスをinsertしたいのですが、どう...続きを読む

Aベストアンサー

insert into sample
values
('Yamada', '731 Fondren,Houston,TX');
としてください。

Q日付型項目のNULLについて(PostgreSQL)

よろしくお願いします。

下記内容のtest_tableを作成して
----
CREATE TABLE "test_table" (
"id" varchar(10) NOT NULL,
"fdate" date
);
----

下記内容のデータを登録しました。
----
insert into test_table(id,fdate) values ('abc',NULL);
----

下記のsqlでデータを取得できませんでした。
どうしてでしょうか?
select * from test_table where fdate = NULL;

Aベストアンサー

select * from test_table where fdate = NULL;
ではなく
select * from test_table where fdate is NULL;
でお試し下さい。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報