0

VB.net を使用して SQL クエリを作成しています

dateFrom As Date ... '02/21/2013
sqlQuery.add(“ HAVING MIN(DATEADD(HOUR, 2, columnDate)) >= ” + myDate)

MyDate の形式は「MM/dd/YYYY」(2013 年 2 月 21 日) ですが、sqlQuery 文字列に追加すると、「dd/MM/YYYY」(2013 年 2 月 21 日) の形式で取得されました。これにより、SQL クエリが失敗します。

日付を「ToString」に変換すると日付形式が変わるのはなぜですか?

考慮事項

  • クエリでパラメータを使用できません
  • フレームワーク 2.0
  • SQLサーバー
4

1 に答える 1

5

MyDate の形式は「dd/MM/YYYY」です</p>

これが何を意味するのかは明確ではありませんがDateTime、一般的に少し混乱していると思います. Aには、(たとえば) an が持つ以上に、フォーマットDateTimeありません。16 進数を解析してから文字列に変換すると、デフォルトで 10 進数でフォーマットされます。値は単なる数値です。日付と時刻は同じように機能します。intint

日付を「ToString」に変換すると日付形式が変わるのはなぜですか?

「変更」されたわけではありません - 以前は存在しませんでした。

幸いなことに、とにかくこれを行うべきではありません。代わりに、パラメーター化された SQL を使用myDateして、コマンド パラメーターに設定する必要があります。SQL コマンドのすべての値に対してこれを行う必要があります。その方法:

  • このようなテキスト変換について心配する必要はありません。
  • SQL インジェクション攻撃から保護されています
  • コード (SQL) をデータ (値) から分離する
于 2013-02-21T20:47:13.493 に答える