0
「日付と時刻」フィールドに「2017-12-04 21:30:00.000」のような日付エントリがあり、期間が「1800」で「2017-12-04 21:30:22.000」に'22'とすると、クエリのレコードは '2017-12-04 21:30:00.000'と '1800'で表示されますが、22秒間は '2017-12-04 21:30:00.000'になります。 2017-12-04 21:00:00.000、継続時間は '1822'(合計1800 + 22)です。私はこの質問を別の方法でこれlinkですが、私は適切な方法で変更することはできませんので、ここでこの質問をして適切な答えを得ていない。日付と時刻フィールドのクエリ
問合せ:
SELECT Interval=(CASE WHEN datepart(MINUTE,[DateTime]) = 0 and datepart(SECOND,DateTime)=0 THEN
CAST(CONVERT(VARCHAR(30),DATEADD(HOUR,-1,[DateTime]),101) + ' '+ cast(format(DATEPART(HOUR,DATEADD(HOUR,-1,[DateTime])),'0#') as varchar)+':30:00' as DateTime)
ELSE (CAST(CONVERT(VARCHAR(30),[DateTime],101) +' ' + (case when datepart(MINUTE,[DateTime])<=30 and
datepart(SECOND,[DateTime])<59
then cast(format(DATEPART(HOUR,[DateTime]),'0#') as varchar)+':00:00'
else cast(format(DATEPART(HOUR,[DateTime]),'0#') as varchar)+':30:00' end) as DateTime)) END),
ID,Code,Duration=SUM(Duration) FROM Table
WHERE [DateTime] >= '2017-12-04 00:00:00' and [DateTime] <= '2017-12-04 23:59:59'
GROUP BY (CASE WHEN datepart(MINUTE,[DateTime]) = 0 and datepart(SECOND,DateTime)=0 THEN
CAST(CONVERT(VARCHAR(30),DATEADD(HOUR,-1,[DateTime]),101) + ' '+ cast(format(DATEPART(HOUR,DATEADD(HOUR,-1,[DateTime])),'0#') as varchar)+':30:00' as DateTime)
ELSE (CAST(CONVERT(VARCHAR(30),[DateTime],101) +' ' + (case when datepart(MINUTE,[DateTime])<=30 and
datepart(SECOND,[DateTime])<59 then cast(format(DATEPART(HOUR,[DateTime]),'0#') as varchar)+':00:00'
else cast(format(DATEPART(HOUR,[DateTime]),'0#') as varchar)+':30:00' end) as DateTime)) END),
ID,Code
Order by Interval
実際のテーブルデータ。
DateTime ID Code Duration
2017-12-12 00:30:00 1 12 1800
2017-12-12 00:30:37 1 12 37
2017-12-12 01:00:00 1 12 1793
2017-12-12 01:30:00 1 12 1800
2017-12-12 01:30:59 1 12 59
私は、クエリを実行した場合、期待される結果は、あなたが30分間隔に[日時]丸める日付関数を使用できますが、結果はあなたの期待される結果と一致していない、これは、
DateTime ID Code Duration
2017-12-12 00:00:00 1 12 1837
2017-12-12 00:30:00 1 12 1800
2017-12-12 01:00:00 1 12 1800
2017-12-12 01:30:00 1 12 59
DateTime ID Code Duration
2017-12-12 00:00:00 1 12 1800
2017-12-12 00:30:00 1 12 1800
2017-12-12 01:00:00 1 12 1800
2017-12-12 01:30:00 1 12 59
これは、言葉の壁にありそうですが、私本当にあなたがここで何をしているのかを翻訳するのに苦労しています。私はあなたの質問を投稿しても、私たちがそれを実行するものがないときは、私たちに多くのことを教えてくれるのではないかと心配しています。おそらくDDL、サンプルデータ、期待される結果セットを投稿するほうがよいでしょう。 – Larnu
@Larnu期待される結果セットを持つサンプルデータをいくつか追加しました。これ以上必要なことがあればお知らせください。 –
2つのデータセット? OK。私はあなたがそれらの結果セットにいかに得るかの韻や理由を見ることができません。異なる論理があるようです。たとえば、私はあなたの最後の行が存在しないことを期待し、前の行は最初の行の論理に基づいて1859の持続時間を持つことを期待しています。あなたの説明は、私は恐れている、全く明確ではない。あなたはあなたが働いていることを述べているようですが、理由や方法は言いません。最初の投稿から2つのデータセットを作成する背景にあるロジックを説明しながら、あなたの投稿を編集することができますか? – Larnu