Luk*_*101 5 c# linq-to-entities sql-server-2008
我需要按日期排序,但日期作为文本存储在数据库中.我正在使用Linq来执行查询.
设计数据库的方式将列更改为日期列是不可行的,因为该列中有许多不同的数据类型.有一个descriminator列,type因此我将知道特定行的类型.
您可以向表中添加一个计算列,当您的鉴别器具有特定值时,该计算列会将这些字符串转换为日期(此处我刚刚使用了'date')。
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Run Code Online (Sandbox Code Playgroud)
如果你有时间信息,那么date应该datetime在函数中CONVERT()。
此外,101是一个样式代码,指示 的预期格式MM/dd/yyyy。如果您有不同的内容,请参阅:http ://msdn.microsoft.com/en-us/library/ms187928.aspx ,但请记住,如果您使用低于 100 的样式,您的表达式将被视为不确定并且您无法创建计算列PERSISTED,因此转换将在每个查询中即时完成(您不希望这样)。
当行值更改时,计算列将自行更新;否则,这些值将像在任何其他列中一样被持久化和查询。无需触发器。
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |