4

データベース忍者の助けが必要です。

次のコードがあります。

SELECT DATEPART(hh, BeginMinute) AS Intervalo, SUM(Qtde) AS Total
  FROM tr_CustomerCount
WHERE BeginMinute > '5/22/2013 00:00:00 AM' AND BeginMinute < '6/22/2013 12:00:00 AM'
GROUP BY DATEPART(hh, BeginMinute)

実際には時間 (HH) を返すだけですが、「:」で区切られた時間と分を一緒に表示したいので、「12:00」は文字列にすることができます。心配はいりません。

これどうやってするの?

前もって感謝します!

4

4 に答える 4

17

スタイル 114 でCONVERTを使用できます(セクションDate and Time Styles):

SELECT CONVERT(VARCHAR(5), GETDATE(), 114);

または、SQL Server 2012 以降では、 FORMAT ( demo )を使用できます。

SELECT FORMAT(GETDATE() , 'hh:mm');
于 2013-05-23T21:07:30.130 に答える
1
SELECT RIGHT('00' + rtrim(cast(DATEPART(hh, BeginMinute) as varchar)), 2) + ':' + 
       RIGHT('00' + rtrim(cast(DATEPART(mi, BeginMinute) as varchar)), 2) AS Intervalo, 
       SUM(Qtde) AS Total
FROM tr_CustomerCount
WHERE BeginMinute > '5/22/2013 00:00:00 AM' 
AND BeginMinute < '6/22/2013 12:00:00 AM'
GROUP BY DATEPART(hh, BeginMinute), DATEPART(mi, BeginMinute)

Click here to see it in action at SQL Fiddle

于 2013-05-23T21:06:56.627 に答える
1

これはすべて、些細なことにしては非常に複雑です。単純に試してみませんか:

left(convert(varchar,current_timestamp,108),5)

これは、datetime 値を 24 時間時計の時間と分の文字列表現に変換するため、たとえば 2:37 PM の時刻は文字列 value に変換されます14:37

あなたがそれを手に入れたら、それから...

select time_hhmm = left(convert(varchar,BeginMinute,108),5) , 
       total     = sum(Qtde)
from tr_CustomerCount
where BeginMinute > '5/22/2013 00:00:00 AM'
  and BeginMinute < '6/22/2013 12:00:00 AM'
group by left(convert(varchar,BeginMinute,108),5)

目にはるかに簡単です。

OPのコメントごとにHH:00のみを表示することを反映するように修正されました:

select time_hhmm = right( '0'+datename(hour,BeginMinute) , 2 ) + ':00 , 
       total     = sum(Qtde)
from tr_CustomerCount
where BeginMinute > '5/22/2013 00:00:00 AM'
  and BeginMinute < '6/22/2013 12:00:00 AM'
group by datename(hour,BeginMinute)
于 2013-05-23T21:47:30.933 に答える
1

例:

DECLARE @theDate DATETIME
SET @theDate = CURRENT_TIMESTAMP

SELECT @theDate 
PRINT (RIGHT('00' + convert(varchar(2), DATEPART(hour, @theDate)), 2) +
    ':' + RIGHT('00' + convert(varchar(2), DATEPART(minute, @theDate)), 2))

説明:

  • DATEPART() は数値を返すため、各呼び出しをテキスト/文字列型 (varchar) にキャストする必要があります
  • T-SQL での文字列連結は単なる'string 1' + 'string 2'
  • 先行ゼロを埋め込むには、値を 2 つの先行ゼロで連結し、RIGHT() を呼び出して、結合された文字列から右端の 2 文字を返します。
于 2013-05-23T21:03:26.863 に答える