日時形式の時間のリストがあります
datetime action
11:13:40 eat
12:33:40 sleep
14:44:40 walk
14:55:40 eat
14:59:40 call
グループ化したい
11:00am eat
12:30pm eat
2:30pm walk
2:30pm eat
2:30pm call
日時形式の時間のリストがあります
datetime action
11:13:40 eat
12:33:40 sleep
14:44:40 walk
14:55:40 eat
14:59:40 call
グループ化したい
11:00am eat
12:30pm eat
2:30pm walk
2:30pm eat
2:30pm call
1 つの方法を次に示します。
SELECT DATE_FORMAT(`datetime`,IF(MINUTE(`datetime`)<30,'%l:00%p','%l:30%p'))
, action
FROM ...
ORDER BY 1
これを少し解くには、MINUTE 関数を使用して、datetime 値から分の部分を抽出します。30 未満の場合は分の部分として「00」を指定し、それ以外の場合は「30」を指定します。残りはフォーマットするだけです。 %l
1 から 12 までの時間の値を返します。ゼロ パディングはありません。は%p
、「AM」または「PM」の値を取得します。(これを小文字にする必要がある場合は、DATE_FORMAT 式全体を LOWER() 関数でラップできます。
SELECT REPLACE(DATE_FORMAT(datetime,'%h %p'),
' ' ,
IF(CEIL(MINUTE(datetime)/30)*30=60,':30 ',':00 ')) AS hour_time
, action
FROM table1
GROUP BY 1