ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

SQLwhere句について

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2018-5-23 10:08
ito_  新米   投稿数: 3
SQLwhere句について質問です。

DB:SQLサーバ


メインソースを定義していないオンライン画面で、
選択した日付(date型)を別のバッチのプログラム(SQLコマンド)にパラメーターで渡し、
Aというテーブルからパラメータで受け取った日付の件数を数えたい場合、

SELECT COUNT (*) from A where date = :1

上記のように、SQLコマンドに書きました。
しかし、
"オペランド方の不整合:dateはintと互換性がありません"
というエラーになります。


そこで日付型を文字型にして、やり直してみたところ、
"=付近に不適切な構文があります。"となってしまいます。


どのようにしたらよいのかご教授ください。



投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-5-23 12:08
Ace_Nagashim  一人前   投稿数: 105
SQLコマンドの :1 は文字形式で判断されるため、
日付型の項目は文字型に変換する必要があります。

私は下記の様に記述して実行させています。

CONVERT(VARCHAR,日付型項目名,112) = 20180523

お試し下さい。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-5-24 16:59
ito_  新米   投稿数: 3

Ace_Nagashim様
ご回答ありがとうございます。


SELECT COUNT(*) from A where CONVERT(VARCHAR,date,112) = :1

これでやってみたところ、日付のパラメーターが渡りました。

しかし、件数のカウントができませんでした。

入力パラメーターに文字型の日付
出力パラメーターに件数
をセットしています。

どなたかわかる方いらっしゃいますでしょうか。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-5-24 17:23
hiro  長老 居住地: 三重  投稿数: 188
こんにちは
ito_様

SQL文への引数は、””で囲むと文字型で囲まないと数値型だったように思います。
”:1” 文字型
:1   数値型

このあたりを試してはどうでしょうか?
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-5-24 17:37
ito_  新米   投稿数: 3

hiro様

':1'にしたところ解決いたしました。
ありがとうございました。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-5-25 10:52
hiro  長老 居住地: 三重  投稿数: 188
こんにちは

解決したみたいで、良かったです。
でも、シングルクォテーションでしたね。
おはずかしい
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約