mssql datediff 예제

앞서 언급했듯이 날짜 사이의 시간 파트를 반환할 수도 있습니다. 다음은 날짜/시간 값 사이의 시간, 분 및 초 수를 반환하는 예제입니다: 이 예제에서는 DATEDIFF() 함수를 사용하여 다양한 날짜 부분에서 두 날짜 간의 차이를 비교합니다. Startdate. SQL Server에서 DATEDIFF 함수를 사용하는 한 가지 실용적인 예는 2003년 3월에 고용된 AdventureWorks2008R2 데이터베이스의 모든 직원을 선택하여 WHERE 절에 있습니다. 응용 프로그램은 원하는 월의 수를 나타내는 문자열(예: 1월=1, 2월=2 등)과 원하는 연도를 나타내는 문자열의 두 가지 매개 변수로 전달됩니다. 그런 다음 DATEDIFF 함수를 시간의 달 단위로 사용합니다 : 예를 들어 75 분이 다음과 같이 표시 될 수 있습니다 다르게 표시 할 수 있습니다 : 01:15:00:00:0 체크 아웃 DATEDIFF() SQL Server에서 잘못된 결과를 반환합니까? 이 글을 읽어보십시오. 이 예제와 결과가 완전히 잘못 보일 수 있지만 완벽하게 올바른 경우 (그리고 그들이 하는 것처럼 보이는 이유에 대한 설명을 위해)을 볼 수 있습니다. http://www.sql-server-helper.com/tips/tip-of-the-day.aspx?tkey=15142666-895a-476c-a094-f78fa58c5cea&tid=57&tkey=uses-of-the-datediff-date-function 이 예제에서 사용자 정의 변수는 시작 날짜 및 끝 날짜에 대한 인수역할을 합니다. 예를 들어 DATEDIFF 선택(일, `2036-03-01`, `2036-02-28`) 2036년이 윤년이어야 한다는 것을 암시합니다. 이 경우 `2036-03-01`에서 시작하여 -2 일을 계산하면 `2036-02-28`의 종료 날짜에 도달한다는 것을 의미합니다. 이 예제에서는 숫자 식(GETDATE(+ 1) 및 스칼라 시스템 함수 GETDATE 및 SYSDATETIME을 끝날짜에 대한 인수로 사용합니다. 모든 유형의 함수(시스템 또는 사용자 정의)의 WHERE 또는 JOIN 절의 래핑 테이블 열은 적절한 인덱스 선택의 쿼리 최적화 작업에서 장애물을 만들기 때문에 쿼리 성능을 크게 저하시킬 수 있습니다.

그러나 내 예에서 dateadd 및 datediff는 날짜 범위를 만드는 데 사용됩니다 (함수에는 테이블의 열이 사용되지 않습니다). WHERE 절에서 이러한 함수를 사용하여 코드와 유사성을 유지했으며 인덱스 적중에는 영향을 미치지 않습니다. 명확히하기 위해 해당 페이지의 예제 중 하나와 같은 코드를 다시 작성할 수 있습니다. DATEDIFF()는 실제로 SET DATEFIRST 값을 무시합니다. 특히 일요일을 주 중 첫 날로 사용하지 않는 문화에 있는 경우 예기치 않은 결과가 발생할 수 있습니다. SQL Server에서 SET DATEFIRST를 무시하는 DATEDIFF()에 대한 이 해결 방법을 확인하십시오. 다음은 두 개의 변수를 선언하고 두 개의 다른 날짜를 할당하는 또 다른 예입니다 (DATEADD()를 사용하여 첫 번째 날짜에 1 년을 추가합니다). 그런 다음 DATEDIFF()를 사용하여 해당 날짜에 대한 다양한 날짜 파트를 반환합니다.