2

恐ろしいタイトルですよね?他の作業から何千もの中断が発生しているときに、スタックオーバーフローが何かをテストするよりも速いかどうかを確認したいと思いました:)

古い VB ネット アプリケーションを更新し、いくつかのロジックをリファクタリングしようとしています。アプリは、いくつかのテーブルで単一の日付からデータを検索し、そのビューをファイルに書き込みます。

SQLでクエリを書くと、同等の結果が得られます

SELECT * FROM table
WHERE CAST(FLOOR(CAST(table.date AS float))AS datetime) = '15-Jul-2010'

理想的には私が使うだろう

SELECT * FROM table WHERE date=@input

日付オブジェクトをパラメータとして System.Data.SqlClient.SqlCommand インスタンスに追加します

それらの2つは比較できますか?期待どおりの結果が得られますか?

4

1 に答える 1

3

はい、2 つは同等です。SqlClient ライブラリは .net 型を sql 型に変換します。SQLクエリの時間部分を切り捨てる必要があるため、次のようなものを使用できます。

SELECT * FROM table WHERE FLOOR(CAST(table.date AS float)) = FLOOR(CAST(@input AS float))

datetime に戻す必要はありませんが、float を比較するだけでかまいません。

于 2010-07-16T09:35:50.617 に答える