Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 返回不同的日期_Sql_Sql Server 2005_Tsql_Distinct_Date - Fatal编程技术网

Sql 返回不同的日期

Sql 返回不同的日期,sql,sql-server-2005,tsql,distinct,date,Sql,Sql Server 2005,Tsql,Distinct,Date,早晨 我试图通过唯一标识符返回结果的不同日期 例如: 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|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执行distinct操作,因为这将只返回我的一个日期。所以我想返回:

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新手,所以很抱歉我可能犯了一个明显的错误。到目前为止,我已经通过搜索之前提出的问题获得了进展


一如既往,我们非常感谢您提供的任何帮助和指针。

如果您使用的是Sql Server 2008-您可以将DateTime列转换为内置的
Date
类型,否则为了消除时间,您应该将时间转换为
VARCHAR()

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

您可以使用T-SQL
convert
函数提取日期

试一试

那么,在你的情况下,你应该这样做

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 
进一步资料:


希望这有帮助

您确定这将返回日期部分之间带有分隔符的日期吗?
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