0

私はdatetime列があるテーブルを持っています.dateとdatetime列のみを渡すことでこの列を一致させたいと思います.

4

4 に答える 4

5

通常、この状況では、列をそのままにして、パラメーターを操作するのが最善です。したがって、@SearchDateパラメーターを渡す場合は、次のようにします。

SELECT abc from mytable
where
   datetimecolumn >= @SearchDate and
   datetimecolumn < DATEADD(day,1,@SearchDate)

SQL Server 2008 以降で実行している場合は、次を使用すると思います。

SELECT abc from mytable
where
   CAST(datetimecolumn as date) = @SearchDate

インデックスをdatetimecolumn使用できること。一方、最初のクエリでは、インデックスが使用可能であると確信しています。一般に、列に対して関数を呼び出すことには注意する必要があります。このようなアクションは、多くの場合、完全なテーブル スキャンを強制することによってパフォーマンスを低下させる可能性があります。

そして、あなたが受け入れている答えとは異なり、私は常に日付を文字列として扱うことを避けようとします.そうするとすぐに、フォーマットに関するあらゆる種類の問題を引き起こします.

于 2013-07-08T06:28:18.547 に答える
0

試す -:

DECLARE @givenDate DATE;

DECLARE @t AS TABLE (
    fld_DateTime DATETIME
)

SET @givenDate = '2013-04-24'

INSERT INTO @t ( fld_DateTime ) 
VALUES ('2013-04-23 14:37:59.580')
, ('2013-04-23 14:59:02.403')
, ('2013-04-23 15:15:36.890')
, ('2013-04-24 08:57:45.800')
, ('2013-04-24 10:44:56.663')
, ('2013-04-24 13:18:20.760')
, ('2013-04-25 09:38:55.503')
, ('2013-06-28 09:20:11.007')
, ('2013-06-28 12:37:04.973')
, ('2013-06-28 12:38:50.130')
, ('2013-07-03 15:27:36.167')

SELECT fld_DateTime
FROM @t
WHERE fld_DateTime >= @givenDate AND fld_DateTime < DATEADD(DAY, 1, @givenDate)
于 2013-07-08T06:28:17.293 に答える