문제

SQL의 두 날짜 사이의 일수를 결정하는 방법이 필요합니다.

답변은 ANSI SQL에 있어야합니다.

도움이 되었습니까?

해결책

ANSI SQL -92 날짜 - 날짜는 간격 유형을 반환합니다. 추출 기능 (4.5.3)을 사용하여 날짜에서 추출하는 것과 동일한 방법을 사용하여 간격에서 스칼라를 추출 할 수 있어야합니다 (4.5.3).

u003Cextract expression>DateTime 또는 간격에서 작동하며 DateTime 또는 간격의 한 구성 요소의 값을 나타내는 정확한 숫자 값을 반환합니다.

그러나 이것은 대부분의 데이터베이스에서 구현되지 않습니다. 아마도 데이터베이스 별 무언가를 사용하여 붙어있을 것입니다. Datediff는 다른 플랫폼에서 매우 잘 구현되었습니다.

다음은 "진정한"방법입니다.

SELECT EXTRACT(DAY FROM DATE '2009-01-01' - DATE '2009-05-05') FROM DUAL;

행운을 빕니다!

다른 팁

날짜 1- 데이트 2를 지원하지 않는 RDBMS를 사용하는 것을 기억할 수 없습니다. SQL 92 동의하는 것 같습니다.

SQL-92 표준은 '-'연산자와 두 날짜를 빼는 것을 지원한다고 생각합니다.

SQL 92는 다음 구문을 지원합니다.

t.date_1 - t.date_2

추출 기능도 ANSI이지만 SQL Server에서는 지원되지 않습니다. 예시:

ABS(EXTRACT(DAY FROM t.date_1) - EXTRACT(DAY FROM t.date_2)

절대 값 함수로 계산을 줄이면 더 작은 날짜가 첫 번째 날짜이더라도 값이 값이 긍정적으로 나옵니다.

추출물은 다음과 같이 지원됩니다.

  • 오라클 9i+
  • MySQL
  • 포스트 그레
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top