SQLwhere句について
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
ito_
投稿数: 3
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
SQLwhere句について質問です。
DB:SQLサーバ
メインソースを定義していないオンライン画面で、
選択した日付(date型)を別のバッチのプログラム(SQLコマンド)にパラメーターで渡し、
Aというテーブルからパラメータで受け取った日付の件数を数えたい場合、
SELECT COUNT (*) from A where date = :1
上記のように、SQLコマンドに書きました。
しかし、
"オペランド方の不整合:dateはintと互換性がありません"
というエラーになります。
そこで日付型を文字型にして、やり直してみたところ、
"=付近に不適切な構文があります。"となってしまいます。
どのようにしたらよいのかご教授ください。
DB:SQLサーバ
メインソースを定義していないオンライン画面で、
選択した日付(date型)を別のバッチのプログラム(SQLコマンド)にパラメーターで渡し、
Aというテーブルからパラメータで受け取った日付の件数を数えたい場合、
SELECT COUNT (*) from A where date = :1
上記のように、SQLコマンドに書きました。
しかし、
"オペランド方の不整合:dateはintと互換性がありません"
というエラーになります。
そこで日付型を文字型にして、やり直してみたところ、
"=付近に不適切な構文があります。"となってしまいます。
どのようにしたらよいのかご教授ください。
投票数:0
平均点:0.00
Ace_Nagashim
投稿数: 105
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
SQLコマンドの :1 は文字形式で判断されるため、
日付型の項目は文字型に変換する必要があります。
私は下記の様に記述して実行させています。
CONVERT(VARCHAR,日付型項目名,112) = 20180523
お試し下さい。
日付型の項目は文字型に変換する必要があります。
私は下記の様に記述して実行させています。
CONVERT(VARCHAR,日付型項目名,112) = 20180523
お試し下さい。
投票数:0
平均点:0.00
ito_
投稿数: 3
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
Ace_Nagashim様
ご回答ありがとうございます。
SELECT COUNT(*) from A where CONVERT(VARCHAR,date,112) = :1
これでやってみたところ、日付のパラメーターが渡りました。
しかし、件数のカウントができませんでした。
入力パラメーターに文字型の日付
出力パラメーターに件数
をセットしています。
どなたかわかる方いらっしゃいますでしょうか。
投票数:0
平均点:0.00
hiro
居住地: 三重
投稿数: 188
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは
ito_様
SQL文への引数は、””で囲むと文字型で囲まないと数値型だったように思います。
”:1” 文字型
:1 数値型
このあたりを試してはどうでしょうか?
ito_様
SQL文への引数は、””で囲むと文字型で囲まないと数値型だったように思います。
”:1” 文字型
:1 数値型
このあたりを試してはどうでしょうか?
投票数:0
平均点:0.00
ito_
投稿数: 3
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
hiro様
':1'にしたところ解決いたしました。
ありがとうございました。
投票数:0
平均点:0.00
hiro
居住地: 三重
投稿数: 188
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは
解決したみたいで、良かったです。
でも、シングルクォテーションでしたね。
おはずかしい
解決したみたいで、良かったです。
でも、シングルクォテーションでしたね。
おはずかしい
![](../../uploads/smil3dbd4d75edb5e.gif)
投票数:0
平均点:0.00