SQL
SQLServer
MSSQL

【SQL Server】datetime型から時間を切り捨てする(時間部分を0時にする)

More than 1 year has passed since last update.

SQL Server 2005のあるテーブルから、当日の0時以降に処理されたのレコードを抽出するのに、以下のSQLを作成した。

GETDATE()を用いて日付を取得した場合は以下の通り。

/* 2016-11-14 15:01:04.320 が返却される */
select GETDATE()

ここから"15:01:04.320"を切り捨てて、"2016-11-14 00:00:00.000"としたい。
その方法が、以下のSQLです。

時間部分を切り捨てする
/* 2016-11-14 00:00:00.000 が返却される */
select CONVERT(datetime, CONVERT(char(8), GETDATE(), 112))

GETDATE()で取得した値をyyyymmddのchar(8)に変換した後に、再度datetimeに変換。

これでほしい値は生成できたが、なんか気持ちわるい気もする。