您有语法问题 - 至少我认为是。我希望在实例化视图(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
我希望有一个解决方案,无论本地化(即美式约会,日式约会和世界其他地区)都有效。
由于
答案 0 :(得分:4)
而不是:
CONVERT(DATE,'1900-JAN-1', 101)
只是做:
CONVERT(DATE,'1900-01-01')
但问题可能出在其他两列Start1
和Start2
上。我猜这些不是DATE
列。
答案 1 :(得分:1)
您传递CONVERT功能的101代码与您的格式不符。请查看以下链接以查找正确的代码:
答案 2 :(得分:0)
好的,这个论坛已经走下坡恕我直言,首先我的帖子得到无休止的语法编辑,这不会改变意义,然后它被推翻,大概是因为它“难以”回答。 https://stackoverflow.com/users/61305/aaron-bertrand是正确的。谢谢亚伦。问题是其中一个引用表中的计算列是非确定性的。在视图上创建实现聚簇索引时,此错误仅在标志中解析。我会发布完整答案的链接但不允许。惭愧我几年前无法恢复所有旧徽章和积分。完整答案http://tinyurl.com/knor8qk