2017-03-28 9 views
0

24時間にわたってセッションを30分単位でカウントするレポートを表示する必要があります。次のcase文を使用して、日付フィールドの分を変換するのにはうまくいきます。SQL時間を半時間に変換してHH:MMのみを抽出する

case when datepart (mi,"tablename.name") < 30 
then dateadd(hh, datediff(hh, 0, "tablename.name")+0, 0) else dateadd (mi, 30, 
dateadd(hh, datediff(hh, 0, "tablename.name")+0, 0)) end, 

今、私はhh:mmを引き出すのに問題があります。私はこれを試しましたが、2つの追加の列が表示されます。

DATEPART(HH,"tablename.name") AS 'Start_Hour', 
DATEPART(minute,"tablename.name") AS 'Start_Min' 
+0

使用しているdbmsにタグを付けます。使用される日付/時刻関数は、製品固有のものです。 – jarlh

答えて

1

これを試してみてください:

CAST(DATEPART(Hour,"tablename.name") as char(2)) + ':' + 
CAST(DATEPART(minute,"tablename.name") as char(2)) As Start_Time 
+0

ありがとう、これは1つのフィールドに時間を取得するのに役立ちます、私はまた、0または30のように分を表示する必要があります。 – Brenda

+0

私はあなたがaleadyはその問題を解決したと思った... –

0

を、これはT-SQLであると仮定すると、あなたは文字列フォーマットの世話をするためにformatを使用することができます。

select format(
    dateadd(minute, round(datediff(minute, '2010-01-01', "tablename.name")/30, 0)*30, '2010-01-01') 
    , N'hh\:mm') 
     from ... 

は適応された、最も近い間隔に丸めこの answerから。

+0

ジェレミー、ありがとう、そこには、私は午前/午後のどちらかを表示するか、24時間形式で表示する必要があります。 – Brenda

+0

AM/PMを取得するには '' 'hh:mm tt'''を使います –

関連する問題