2011-11-24 13 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の場合、私は自分の日付のうちの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 Serverの2008 - あなたはにDateTime列をキャストすることができますそれ以外の場合は、あなただけの日/月/年の部品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年に動作するのでしょうか? –

関連する問題