SQL Server 2005中:smalldatetime的转换为varchar表现不同视图和“正常”的查询

StackOverflow https://stackoverflow.com/questions/1969132

  •  21-09-2019
  •  | 
  •  

我有基本上只是返回从一个表中的所有记录的图,并增加了一个列“isodate”,其被认为是在ISO-格式的日期。

CREATE VIEW [dbo].[v_bedarfe]
AS 
   SELECT *,convert(varchar(16),datum,20) As isodat FROM bedarfe
GO

在 “基准” -field是SMALLDATETIME。 在isodat查询的结果......“令人惊讶”,所以做出了明确一点,我想这样的:

select top 10 datum,isodat,convert(varchar(16),datum,20) As isodat2 from v_bedarfe

这导致:

“截图从查询结果“

和看起来非常错误的。

所以,我认为我在这里有错误的预期或AM“滥用”的东西,但我看不出有什么我可以做错误并希望任何建议,如何重回正轨这里...

由于

迈克尔结果 (希望张贴这时的屏幕截图将显示正确地,预览不显示它)

有帮助吗?

解决方案

在视图中使用*是危险的。如果表定义的变化,*可以使视图映射列错误。降及重新创建无*视图,看看是否能解决该问题。

P.S。转换20实际上是ODBC规范,yyyy-mm-dd hh:mi:ss(24h),请参见 MSDN页

其他提示

在转换的最后的parm是输出格式。

20 => YYYY-MM-DD HH:MI:SS(24小时)

131 => DD / MM / YY HH:MI:SS:mmmAM

MS SQL转换()

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top