これが私が見つけた最も簡単なものです
-- Midnight floor of current date
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()))
DATEDIFFは、1900〜1-1の前後の整数日数を返し、Convert Datetimeは、それを午前0時にその日付に戻す必要があります。
DateDiffは整数を返すため、日数の加算または減算を使用して、適切なオフセットを取得できます。
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()) + @dayOffset)
これは四捨五入ではなく、切り捨てられます...しかし、それが求められていることだと思います。(丸めて1を追加して切り捨てます...これも丸めではなく、天井ですが、おそらく必要なものです。実際に丸めるには、.5を追加して切り捨てます(これは機能しますか?)。
GetDate()に.5を追加でき、期待どおりに機能することがわかりました。
-- Round Current time to midnight today or midnight tomorrow
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE() + .5))
私はSQLServer2008ですべての試行を行いましたが、これらの機能は2005にも当てはまると思います。