0

我有一个视图,基本上只返回表中的所有记录,并添加一个“isodate”列,它应该是 ISO 格式的日期。

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

“基准”字段是小日期时间。对 isodat 的查询结果是......'令人惊讶',所以为了明确这一点,我尝试了这个:

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

这导致:

查询结果的屏幕截图

这看起来非常错误。

所以我假设我有错误的期望或在这里“滥用”某些东西,但我看不出我做错了什么,并且希望有任何建议如何回到正轨......

谢谢

迈克尔
(希望发布时屏幕截图能正确显示,预览不显示)

4

2 回答 2

1

在视图中使用*是危险的。如果表定义发生变化,*可能会导致视图映射列错误。删除并重新创建不带 的视图*,看看是否能解决问题。

PS Convert 20 实际上是 ODBC 规范的yyyy-mm-dd hh:mi:ss(24h),请参阅MSDN 页面

于 2009-12-28T12:01:28.857 回答
0

convert 中的最后一个参数是输出格式。

20 => yyyy-mm-dd hh:mi:ss(24h)

131 => dd/mm/yy hh:mi:ss:mmmAM

请参阅MS SQL 转换()

于 2009-12-28T12:03:43.890 回答