在视图MSSQL中使用CAST或CONVERT

时间:2013-12-10 16:43:59

标签: sql-server sql-server-2008

您有语法问题 - 至少我认为是。我希望在实例化视图(MS SQL 2008 +)中将默认日期作为case语句的一部分:

, CASE 
    WHEN WithFirstDate = 0 THEN CONVERT(DATE,'1900-JAN-1', 101)
    WHEN WithFirstDate = 1 THEN
        Start1
    ELSE --WithFirstDate = 2 
        Start2
    END ValidDate

我收到以下错误: view使用从字符串到datetime或smalldatetime的隐式转换。使用具有确定性样式值的显式CONVERT

我希望有一个解决方案,无论本地化(即美式约会,日式约会和世界其他地区)都有效。

由于

3 个答案:

答案 0 :(得分:4)

而不是:

CONVERT(DATE,'1900-JAN-1', 101)

只是做:

CONVERT(DATE,'1900-01-01')

但问题可能出在其他两列Start1Start2上。我猜这些不是DATE列。

答案 1 :(得分:1)

您传递CONVERT功能的101代码与您的格式不符。请查看以下链接以查找正确的代码:

http://msdn.microsoft.com/en-us/library/ms187928.aspx

答案 2 :(得分:0)

好的,这个论坛已经走下坡恕我直言,首先我的帖子得到无休止的语法编辑,这不会改变意义,然后它被推翻,大概是因为它“难以”回答。 https://stackoverflow.com/users/61305/aaron-bertrand是正确的。谢谢亚伦。问题是其中一个引用表中的计算列是非确定性的。在视图上创建实现聚簇索引时,此错误仅在标志中解析。我会发布完整答案的链接但不允许。惭愧我几年前无法恢复所有旧徽章和积分。完整答案http://tinyurl.com/knor8qk