2013-09-24 3 views
2

데이터베이스에 대한 액세스를 사용하고 있으며 SQL 쿼리를 작성하여 정보를 표시해야합니다. 나는 내가 필요한 것을 어떻게 표시하는지 알 수 없다.SQL의 날짜 함수는 무엇입니까?

영문으로 만료 날짜가 현재 날짜로부터 30 일 미만일 때 설명이 표시되도록 검색어가 필요합니다.

SQL에 대한 지식이 제한적입니다. 누구라도 특정 리소스를 가르쳐 주면 매우 유용 할 것입니다. 미리 감사드립니다. 여기

내가 무엇을 가지고 :

SELECT Description, [Expiration Date] 
FROM Hardware 
WHERE [Expiration Date] = "(GET DATE()"; 
+0

간단히 살펴보면 간단히 말해서 'Date()'http://support.microsoft.com/kb/210604/en-us – DrCopyPaste

답변

1

당신은 현재 날짜를 얻을 수있는 기능 NOW()DATE()를 사용할 수 있습니다.

요일을 날짜에 추가하려면 DATEADD 함수를 사용하십시오.

WHERE DATEADD(d, 30, [Expiration Date]) >= DATE() 
0

이 :

SELECT Description, [Expiration Date] 
FROM Hardware 
WHERE DATEDIFF([Expiration Date], NOW()) < 30; 

나이 :

SELECT Description, [Expiration Date] 
FROM Hardware 
WHERE [Expiration Date] < DATE_ADD(NOW(),INTERVAL 30 DAY); 

작동합니다.

1
SELECT [Description], [Expiration Date] 
FROM Hardware 
WHERE DateDiff('d', [Expiration Date], Date()) < 30; 

참고 Descriptionreserved word입니다. db 엔진을 혼란스럽게하지 않으려면 대괄호로 묶었습니다.

또한 DateDiff 표현은 날짜 변경 횟수 만 계산합니다. 즉 #2013-9-23 23:00# ~ #2013-9-24 01:00#은 1 일로 계산됩니다. 그것이 원하는 것이 아니라면 날짜/시간 값에서 직접 날짜 산술 연산을 수행 할 수 있습니다. Hardware[Expiration Date]에 인덱스가있는 큰 테이블 인 경우

SELECT [Description], [Expiration Date] 
FROM Hardware 
WHERE (Date() - [Expiration Date]) < 30; 

, 테이블의 모든 행을 검사보다는 인덱스 검색을 지원하는 쿼리와 더 나은 성능을 얻을 수 있습니다.

SELECT [Description], [Expiration Date] 
FROM Hardware 
WHERE [Expiration Date] > (Date() - 30);