2014-02-20 4 views
19

오늘 날짜를 가져 와서 01/mm /yyyy 형식으로 변환하고 3 개월 전 배달 월이있는 테이블에서 데이터를 가져올 수 있습니까? 표에는 이미 납품 월이 01/mm/yyyy으로 포함되어 있습니다.지난 3 개월 동안 데이터를 가져 오는 SQL 쿼리

+0

WHERE Convert (DATE, TableColumn)> = GETDATE() - 90' ?? 지금까지 해봤 니? –

+2

왜 날짜를 문자열로 저장하고 있습니까? 테이블을 고쳐야합니다. –

+0

01/mm/yyyy 형식의 배달 날짜 테이블이 테이블에 생성됩니다. 이것은 나중에 PHP를 사용하기 쉽도록하기위한 것입니다. 따라서 지난 3 개월 동안 특정 유형의 게재를 얻으려면 오늘 날짜를 가져와 01/mm/yyyy 형식으로 변환하고 테이블의 게재 월을 참조하여 현재 월 데이터를 포함하여 최소 3 개월을 얻으려고했습니다. . – user88866050

답변

53
SELECT * 
FROM TABLE_NAME 
WHERE Date_Column >= DATEADD(MONTH, -3, GETDATE()) 

Mureinik의 제안 동일한 결과를 반환하는 방법,하지만 당신의 쿼리가 Date_Column에 어떤 인덱스 혜택을 누릴 수 있습니다 이런 식으로 일을 .

또는 지난 90 일간 확인할 수 있습니다. mysql을의

SELECT * 
FROM TABLE_NAME 
WHERE Date_Column >= DATEADD(DAY, -90, GETDATE()) 
+6

실제로'DATEADD (DAY, -90, GETDATE()) '대신에'GETDATE() - 90'을 쓸 수 있습니다. –

+4

@huMptyduMpty 3 개월은 반드시 30 일 또는 31 일 (또는 28 일 또는 우리가 2 월을 고려하면 29) – AlexB

6

나는 형식 변환에 대해 신경 datediff를 사용하지 않는 게 좋을 :

SELECT * 
FROM mytable 
WHERE DATEDIFF(MONTH, my_date_column, GETDATE()) <= 3 
7

최신 버전은 DATEADD 대신 구문

DATE_ADD(date,INTERVAL expr type) 

지난 3 개월 데이터 사용을 얻으려면,

DATE_ADD(NOW(),INTERVAL -90 DAY) 
DATE_ADD(NOW(), INTERVAL -3 MONTH) 
+1

MySQL의 질문이 아닙니다 ... – Migol

+2

'DATE_ADD'가 완벽하게 작동했습니다! 'DATEADD'는 MySQL에 존재하지 않는 것 같습니다. – Erik

0

지난 3 개월

SELECT DATEADD(dd,DATEDIFF(dd,0,DATEADD(mm,-3,GETDATE())),0) 
에게 사용을 지원하지 않습니다

오늘

SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0) 
관련 문제