SQL STUFF DATETIME不返回所有值

时间:2016-04-06 16:13:11

标签: sql sql-server tsql

我正在尝试使用STUFF函数将特定行的文本合并到一个单元格中。它适用于VARCHAR值但是当我使用带有DATETIME值的STUFF时,我收到一个错误:"将varchar数据类型转换为日期时间数据类型会导致超出范围的值。" 我试图转换值,但它没有返回我期望的值。

我想在每个CreatedDate行中返回的内容类似于

  

" 2016年3月29日上午9:42,2016年3月31日上午9:42,2016年3月31日上午9:43"

但它只显示其中一个值。 以下是我的查询的一部分:

pView

1 个答案:

答案 0 :(得分:0)

似乎查询的某些部分不在问题中..现在是repro.further东西不会引起任何问题..

- 这有效

declare  @dt table
(
id datetime
)
insert into @dt
select 'Mar 29 2016 9:42AM' union
select 'Mar 31 2016 9:42AM' union select  'Mar 31 2016 9:43AM'

select  id,stuff((select ','+ convert(varchar,id) from @dt
for xml path('')),1,1,'')
from @dt

- 这显然不起作用,你在查询中没有这样做..

declare  @dt table
(
id datetime
)
insert into @dt
select 'Mar 29 2016 9:42AM' union
select 'Mar 31 2016 9:42AM' union select  'Mar 31 2016 9:43AM'

select  id,stuff((select ','+ id from @dt
for xml path('')),1,1,'')
from @dt

似乎有一些地方(未在您的问题中显示)将日期时间存储为varchar,并且在将其转换为datetime时,它失败了

东西不会导致任何值被截断,如果你看到更少的值,你应该单独查看你的连接列