0

日時形式の時間のリストがあります

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
4

2 に答える 2

1

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」を指定します。残りはフォーマットするだけです。 %l1 から 12 までの時間の値を返します。ゼロ パディングはありません。は%p、「AM」または「PM」の値を取得します。(これを小文字にする必要がある場合は、DATE_FORMAT 式全体を LOWER() 関数でラップできます。

于 2013-02-22T02:57:07.480 に答える
0
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
于 2013-02-22T01:21:33.707 に答える