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
나는 그 결과는 예상 쿼리를 실행하면
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
이 때문에 언어의 장벽을 가능성이 있지만, I 당신이 여기있는 것을 번역하려고 정말로 고심하고 있습니다. 나는 당신의 질의를 게시하는 것이 우리가 그것을 실행할 필요가 없을 때 우리에게 많이 알려주지 않는다고 생각합니다. DDL, 샘플 데이터 및 예상 결과를 게시하는 것이 더 나을 것입니다. – Larnu
@Larnu 예상 결과 세트가있는 샘플 데이터를 추가했습니다. 어떤 것보다 더 필요한 것이 있으면 알려주십시오. –
2 개의 데이터 세트? 승인. 나는 그 결과 집합에 어떻게 도달 할 지에 대한 어떠한 운이나 이유도 볼 수 없습니다. 다른 논리가있는 것 같습니다. 예를 들어, 마지막 행이 존재하지 않을 것으로 예상하고, 행은 첫 행의 논리에 따라 1859의 지속 기간을 갖습니다. 당신의 설명은 분명하지 않습니다. 당신은 당신이 일하는 것을 진술하고있는 것처럼 보이지만 왜 또는 어떻게하지 않습니다. 게시물을 편집 할 수 있습니까? ** 신중하게 ** 처음부터 귀하의 2 데이터 세트를 만드는 뒤에있는 논리를 설명? – Larnu