SQL Serverの日付時刻データから時刻部分を取り除いて時刻を00:00:00にする方法について覚書。
日付時刻から時刻部分を取り除く(00:00:00にする)方法
例えば、日付時刻型のフィールドに"2010/10/02 15:21:10"というデータが入っていた場合に、それを"2010/10/02 00:00:00"にする方法。
方法1
日付データをint型(整数型)に変換して少数部を消す。
そして再度datetime型に変換する。
こんな感じ。
cast(cast(getdate() as int) as datetime)
方法2
日付部分(10桁)のみをchar型に変換して再度日付時刻型に戻す。
日付時刻型の値を文字列型に変換させるとyyyy/mm/dd hh:mm:ss形式で変換されるので、変換する文字列型の最大値を10文字にしておけば時刻部分は自動的に切り捨てられるので、結果的に日付部分のみ文字列として変換される。
で、それを再度日付時刻型に変換してあげれば時刻部分は切り捨てられているため"00:00:00"になる。
式としてはこんな感じ。
cast(CONVERT(char(10), getdate(), 23) as datetime)
正しい方法なのかは不明です。
とりあえずこの方法でできたので覚書。
コメント