最善の方法は:
SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0)
これは、内部的に SQL Server がすべての日付を 2 つの整数として格納するためです。最初の日付は 1900 年 1 月 1 日からの **** 日数*** です。真夜中からの秒数 (SmallDateTime
の秒数) s、または DateTime
の場合はミリ秒 s)
上記の式を使用すると、すべての変換が回避され、日付の内部表現の最初の整数を直接読み取ってアクセスするため、処理を実行する必要がなくなります...上記の式の 2 つのゼロ (1 を表す) 1900 年 1 月 1 日) は、1900 年 1 月 1 日の日付の SQL サーバー内部表現と正確に (整数として) 一致するため、処理や変換なしで直接利用されます。
*ノート。実際には、ある日付から別の日付に到達するために越えなければならない日付の境界 (真夜中) の数です。