2016-08-23 3 views
2

단일 쿼리에서 시간과 분을 어떻게 추가 할 수 있습니까? 단일 쿼리에 시간과 분을 추가하는 방법

나는이

Select DATEADD(hh,23.59,CAST('2016-07-08' AS DATETIME)) 

내가 광고 23 시간 59 분 정도가 필요했지만, 내 코드는 시간을 추가합니다. 왜?

+0

DATEADD 및 23.59 * 60? 아니면 DATEADD에 두 번 전화 했나요? (몇 시간 동안 하나, 몇 분 동안 하나씩) – MatBailie

+3

이것은 일정 기간의 끝점을 정의하기위한 것이므로 배타적 끝점을 계산하는 것이 일반적으로 쉽다는 것을 알아야합니다 (그리고'<=')를 포함하는 엔드 포인트를 계산합니다. 예 : 그날 마지막 순간에 일어나는 일들을 제외시키려는 것이 현재 귀하의 의도입니까? –

답변

3

어때?

Select DATEADD(minute, 23*60 + 59, CAST('2016-07-08' AS DATETIME)) 

편집 : 당신이 부동/진수 값과 같은 23.59를 얻는 경우

은, 당신은 할 수 있습니다 :

Select DATEADD(minute, FLOOR(@hhmm) * 60 + (@hhmm - FLOOR(@hhmm)) * 100, CAST('2016-07-08' AS DATETIME)) 

참고 : 또한 사용할 수 있습니다

Select DATEADD(minute, FLOOR(@hhmm) * 60 + (@hhmm % 1) * 100, CAST('2016-07-08' AS DATETIME)) 

그러나이 모듈러 연산자의 사용법은 약간 벗어났습니다.

+1

수식을 구하십시오! –

+0

감사합니다.이 방법을 시도했는데 23.59에서 나온 float 값을 20, 18.30 15.22와 같은 값을 가질 수 있는지 확인합니다. 23 * 60처럼 시간 파트를 곱하고 분을 더하는 방법 59 –

1

또한 두 번 DATEADD()를 사용할 수 있습니다

Select DATEADD(minute,59,DATEADD(hh,23,CAST('2016-07-08' AS DATETIME))) 
1

datepart 인수, 귀하의 경우 hh에서, 정수가 추가되는 날짜의 일부입니다. 따라서 DATEADD 함수는 입력의 소수 부분을 무시합니다.

, 당신도 같이 23 시간 후 59분을 추가, 두 번 DATEADD를 사용하거나 날짜에 하루 추가하고 1 분 뺄 필요가 원하는 결과를 얻으려면 :

Select DATEADD(MI, -1, CAST('2016-07-08' AS DATETIME) + 1) 

도 참조하십시오. Microsoft's documentation on DATEADD.

+0

감사합니다. Toby, 나는 나의 대답을 편집했다, 그것이 그의 질문에 대답하기를 바란다. – Oleg

0

다른 방법 : 당신은 빼기 분에게 다음

출력을 하루 추가에 의해 할 수

select DATEADD(minute, -1, DATEADD(DAY, 1,CAST('2016-07-08' AS DATETIME))) 
0

가 날짜 시간 부분을 추가하기위한 아래의 코드를 사용하여 동일합니다. 할인과

SELECT DATEADD(Day, DATEDIFF(Day, 0, CAST('2016-07-08' AS DATETIME)), '23:59:00.000') 

enter image description here

관련 문제