アプリ版:「スタンプのみでお礼する」機能のリリースについて

Request.QueryStringで、例えば2008/9/4 20:00みたいな値を取得して
それをDBに書き込みたいのですが、「型の変換に失敗しました」というエラーがでてしまいます。
書き込みたい項目がdatatime型なので、CData()を使ってみたのですがうまくいきません。
こういう場合は、どうしたらいいのでしょう?

A 回答 (4件)

>Response.Write a1(2)



SQL自体をResponse.Write かファイルに書き出すと何か判るかもしれません。

>OracleではなくSQLサーバーですが
なるほどdatetime型でしたね。

>insert into table(x,yo,time) values(2,2,2008/9/4 20:00:57)
SQL編集部分のコーディングに準拠するなら
insert into table(x,yo,time) values('2','2','2008/9/4 20:00:57')
こうでは?(実際にプログラムが編集した SQL を使わないと意味ないです。)
こちらではこの SQL で Management Studio 使ってうまく登録できましたが(SQLServer2005)。。。

khazad-lefty さんがおっしゃるように CONVERT かました方がよさそうな気はしますね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
シングルコーテーションをつけるだけで解決しました。

>SQL自体をResponse.Write かファイルに書き出すと何か判るかもしれません。
この方法は役に立ちました。

お礼日時:2008/09/05 16:26

時間を挿入する場合はCONVERT関数をつかって明示的にSQL文の中で日付型に変換しないといけなかったかも(自動的にCASTされな

いというか)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
どうやら、シングルコーテーションとダブルコーテーションの使い方が間違っていただけのようです。

CONVERT関数も調べてみます。

お礼日時:2008/09/05 16:29

a(2)の中身を表示してみて、正しく日時が入っていますか?


日付と時間の間の半角空白が「+」になってたりしませんか?
入っている場合、その SQL だけを直接 SQL*Plus (Oracleの場合)などで実行して、うまくいきますか?

この回答への補足

Response.Write a1(2)
としたら
2008/9/4 20:00:57
と表示されます。+ではなく空白で表示されていました。OracleではなくSQLサーバーですが、直接
insert into table(x,yo,time) values(2,2,2008/9/4 20:00:57)
としたら
'20' 付近に不適切な構文があります。
というエラーが出ました。

補足日時:2008/09/05 11:58
    • good
    • 0

SQLの編集箇所とその周辺(QueryString で得た値をセットする箇所)のコーディングを示してください。

この回答への補足

sample.asp?a=1,1,2008/9/4 20:00:57&name=太郎

a=Request.QueryString("a")
name=Request.QueryString("name")

a1=split(a,",")
DB接続
SQL = "Insert Into table (x,y,time,name)" & _
"values('" & a1(0) & "','" & a1(1) & "', '" & a1(2) & "', '" & nema & "');"
adcn.Execute SQL

かなりざっくりとですが、こんな感じです。

補足日時:2008/09/05 10:31
    • good
    • 0

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