我需要按日期排序,但日期以文本形式存储在数据库中。我正在使用 Linq to 实体来执行查询。
根据数据库的设计方式,将该列更改为日期列是不可行的,因为该列中有许多不同的数据类型。有一个名为的鉴别器列type
所以我会知道特定行是什么类型。
您可以向表中添加一个计算列,当您的鉴别器具有特定值时,该计算列会将这些字符串转换为日期(这里我刚刚使用了'date'
).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
如果您有时间信息,那么date
应该datetime
in the CONVERT()
功能。
另外,101
是一个样式代码,指示预期的格式MM/dd/yyyy
。如果你有什么不同的,可以参考这个:http://msdn.microsoft.com/en-us/library/ms187928.aspx http://msdn.microsoft.com/en-us/library/ms187928.aspx,但请记住,如果您使用低于 100 的样式,您的表达式将被视为不确定,并且您无法创建计算列PERSISTED
,因此转换将在每个查询中即时完成(您不希望这样)。
当行值更改时,计算列将自行更新;否则,这些值将像在任何其他列中一样被持久化和查询。无需触发器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)