SQL備忘 時刻指定で日付を変更する

難しくはないけど、思い出すのは大変なんですね。

キーワード

 WHEN   THEN  END  列名

CONVERT(VARCHAR,[LDatetime],108)

CONVERT(Date,CONVERT(varchar,[LDatetime],111))

 

日付時刻は 深夜24時で、日付が変更されますが、
実際の稼働日は、朝6時 や 朝8時30分 に 日付が変更されます。
 
そんなとき、利用するのが、日付時刻を判断して、日付を変更することです。
以下の例は、日付時刻(LDateTime)を 8:30で日付変更しています。
変更後の列名を WorkDay
-----------------------
select[AAA]
   ,CASE WHEN CONVERT(VARCHAR,[LDatetime],108) >= convert(varchar,'08:30:00',108) THEN            CONVERT(Date,CONVERT(varchar,[LDatetime],111))
   WHEN CONVERT(VARCHAR,[LDatetime],108) < convert(varchar,'08:30:00',108) THEN   CONVERT(Date,CONVERT(VARCHAR,[LDatetime]-1,111)) END WorkDay
from dbo.tbl
---------------------