列にインデックスを使用する可能性を維持するために[date]
(現在は存在しない場合でも、将来的には存在する可能性があります)、次のことを試してください。
AND [date] >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
AND [date] < DATEADD(DAY, 1, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP));
SQL Server 2008 以降を使用している場合は、次のようにしてコードを短縮できますが、[date]
存在する場合は引き続きインデックスを利用できます。
AND CONVERT(DATE, [date]) = CONVERT(DATE, CURRENT_TIMESTAMP);
編集
なぜ3/6/2012
6 月 3 日ではなく 3 月 6 日なのか混乱しているように見えるので、次のようなあいまいな日付リテラル'3/6/2012'
をデータベースに手動で挿入する代わりに、列を次のようにデフォルトにすることをお勧めします。
ALTER TABLE dbo.table_roaster_time_table
ALTER COLUMN [date] DATETIME NOT NULL;
ALTER TABLE dbo.table_roaster_time_table
ADD CONSTRAINT df_date DEFAULT (CURRENT_TIMESTAMP)
FOR [date];
日付リテラルを挿入する場合は、少なくとも次のような安全で明確な形式を使用してYYYYMMDD
ください。
INSERT dbo.table_roaster_time_table([date]) VALUES('20120603');
これで混乱はありません。