함수를 사용하여 가장 가까운 분과 가장 가까운 시간으로 반올림된 T-SQL 날짜 시간
SQL Server 2008에서는 가급적이면 2008년에 기존 함수를 사용하여 datetime 열을 가장 가까운 시간과 가장 가까운 분으로 반올림하고 싶습니다.
이 열 값의 경우2007-09-22 15:07:38.850출력은 다음과 같습니다.
2007-09-22 15:08 -- nearest minute
2007-09-22 15 -- nearest hour
declare @dt datetime
set @dt = '09-22-2007 15:07:38.850'
select dateadd(mi, datediff(mi, 0, @dt), 0)
select dateadd(hour, datediff(hour, 0, @dt), 0)
돌아올 것입니다
2007-09-22 15:07:00.000
2007-09-22 15:00:00.000
위의 내용은 초와 분을 짧게 하여 질문에 요청된 결과를 생성합니다.@OMG Ponys가 지적했듯이, 반올림/축소하려면 각각 30분 또는 30분을 추가한 다음 잘라낼 수 있습니다.
select dateadd(mi, datediff(mi, 0, dateadd(s, 30, @dt)), 0)
select dateadd(hour, datediff(hour, 0, dateadd(mi, 30, @dt)), 0)
그러면 다음을 얻을 수 있습니다.
2007-09-22 15:08:00.000
2007-09-22 15:00:00.000
SQL Server 2008에 데이터 유형이 추가되기 전에 위의 방법을 사용하여 날짜만 가져오기 위해 날짜 시간에서 시간 부분을 잘라냅니다.이 개념은 해당 날짜 시간과 특정 시점 사이의 일 수를 결정하는 것입니다.0은연중에 그것을 던집니다.1900-01-01 00:00:00.000):
declare @days int
set @days = datediff(day, 0, @dt)
그런 다음 해당 일 수를 지정된 시점에 추가합니다. 그러면 시간이 다음으로 설정된 원래 날짜가 제공됩니다.00:00:00.000:
select dateadd(day, @days, 0)
또는 더 간단하게는:
select dateadd(day, datediff(day, 0, @dt), 0)
다른 날짜 부분 사용(예:hour,mi)이 그에 따라 작동합니다.
예와 같이 "반올림"됩니다.날짜의 막대 값을 반환합니다.
DECLARE @date As DateTime2
SET @date = '2007-09-22 15:07:38.850'
SELECT CONVERT(VARCHAR(16), @date, 120) --2007-09-22 15:07
SELECT CONVERT(VARCHAR(13), @date, 120) --2007-09-22 15
저는 이 질문이 오래된 것이라는 것을 알고 있고 받아들여지고 대안적인 답이 있다는 것을 알고 있습니다.또한 제 대답은 질문의 절반에 불과하지만, 가장 가까운 시간으로 반올림하고 단일 함수만 사용하여 날짜/시간 호환 값을 유지하고자 하는 사용자에게는 다음과 같습니다.
CAST(YourValueHere as smalldatetime);
몇 시간 또는 몇 초 동안 위의 Jeff Ogata의 답변(승인된 답변)을 사용합니다.
Select convert(char(8), DATEADD(MINUTE, DATEDIFF(MINUTE, 0, getdate), 0), 108) as Time
00으로 반올림합니다.
언급URL : https://stackoverflow.com/questions/6666866/t-sql-datetime-rounded-to-nearest-minute-and-nearest-hours-with-using-functions
'programing' 카테고리의 다른 글
| "chore"를 커밋 메시지 유형으로 사용할 때는 언제입니까? (0) | 2023.05.29 |
|---|---|
| 오류: Postgres를 사용하여 시퀀스 city_id_seq에 대한 사용 권한이 거부되었습니다. (0) | 2023.05.29 |
| Excel에서 워크북 끝에 시트 추가(정상적인 방법이 작동하지 않습니까?) (0) | 2023.05.29 |
| 지정된 스키마에 테이블이 있는지 확인하는 방법 (0) | 2023.05.29 |
| 작업을 직접 반환할 수 있는데 비동기를 사용하고 반환을 기다리는 이유는 무엇입니까? (0) | 2023.05.29 |