2011-11-24 4 views
1

아침다른 날짜로 돌아 가기

고유 한 식별자로 결과의 고유 날짜를 반환하려고합니다. 예를 들어

:

ID|Date 
1 | 2011-10-01 23:57:59 
1 | 2011-10-01 23:58:59 
1 | 2010-10-01 23:59:59 
2 | 2010-09-01 23:59:59 
2 | 2010-09-01 23:58:29 
3 | 2010-09-01 23:58:39 
3 | 2010-10-01 23:59:14 
3 | 2010-10-01 23:59:36 

시간은 단지 날짜 중요하지 않습니다. 예를 들어 ID 1에서 ID에 대해 고유 한 작업을 수행 할 수 없기 때문에 내 날짜 중 하나만 반환합니다. 그래서 반환 할 것입니다 :

1|2011-10-01 
1|2010-10-01 

내가 봤어 다음 쿼리 :

Drop Table #Temp 

select Distinct DateAdd(dd, DateDiff(DD,0, Date),0) as DateOnly 
,ID 
Into #Temp 
From Table 

Select Distinct (Date) 
,ID 
From #Temp 

내가 그러나 다음과 같은 결과를 얻고있다 :

ID|Date 
1 | 2011-10-01 00:00:00 
1 | 2011-10-01 00:00:00 
1 | 2010-10-01 00:00:00 

내가 너무 SQL에 새로 온 사람을 사과 나는 눈부신 실수를 저질렀을지도 모른다. 이전에 묻는 질문을 통해 검색했습니다.

언제나처럼 어떤 도움이나 조언을 부탁드립니다.

+1

어떤 버전의 Sql Server가 필요합니까? – sll

+0

안녕하세요, 자사의 SQL 2005 –

답변

2

당신은 날짜를 추출하는 T-SQL convert 기능을 사용할 수 있습니다.

CONVERT(char(10), GetDate(),126) 

때문에, 귀하의 경우,

Drop Table #Temp 

select Distinct CONVERT(char(10), DateAdd(dd, DateDiff(DD,0, Date),0), 126) as DateOnly 
,ID 
Into #Temp 
From Table 

Select Distinct (Date) 
,ID 
From #Temp 

추가 정보를 할

보십시오 : Getting the Date Portion of a SQL Server Datetime field

희망이 도움이!

+0

날짜 부분 사이에 구분 기호가 포함 된 날짜를 반환하겠습니까? – sll

+0

예, 지금은 그렇게 생각합니다;) 고마워요. – dknaack

+0

고마워요. –

1

당신이 사용하는 경우는 SQL 서버 2008 - 당신은에 날짜 시간 열을 캐스팅 할 수있는 그렇지 않으면 당신은 일/월/년 부품 VARCHAR()로 캐스팅하고 그래서 datetime 시간으로 다시 변환해야 시간을 없애, Date 유형에 내장 일부는 제로가 될 것이다 :

declare @dates table(id int, dt datetime) 
INSERT INTO @dates VALUES(1, '2011-10-01 23:57:49') 
INSERT INTO @dates VALUES(2, '2011-10-02 23:57:59') 
INSERT INTO @dates VALUES(2, '2011-10-02 23:57:39') 

SELECT stripped.id, stripped.dateOnly 
FROM 
(
    -- this will return dates with zeroed time part 2011-10-01 00:00:00.000 
    SELECT id, 
      CONVERT(datetime, 
      CAST(YEAR(dt) as VARCHAR(4)) + '-' + 
      CAST(MONTH(dt) AS VARCHAR(2)) + '-' + 
      CAST(DAY(dt) AS VARCHAR(2))) as dateOnly 
    FROM @dates 
) stripped 
GROUP BY stripped.id, stripped.dateOnly 
+0

귀하의 회신에 감사드립니다,이 2005 년에 작동합니까? –