【发布时间】:2014-09-08 17:17:31
【问题描述】:
我想出一种解决格式不佳的表格的方法是将“日期”列解析为三列,之后我可以正确运行查询。日期格式为 'ddmmmyyyy' 样式 (31DEC2013)。
如何将此字符串解析为三个不同的列“日”、“月”、“年”。
提前致谢
【问题讨论】:
-
到目前为止没有人提到的一件事是,当您将日期存储在 varchar 字段中时,该字段中出现无效日期的可能性很高。在尝试转换之前,您应该确保所有值都是有效日期。
-
在 SQL Server 2012 及更高版本中,您可以轻松地使用
TRY_CONVERT()来简单地忽略无法转换的值。在早期版本中,您可能需要首先使用ISDATE()识别它们,并以某种方式阻止这些行被考虑(一个简单的WHERE子句通常不足以避免问题)。当然,最好的解决办法是首先停止以这种方式存储这些非日期字符串 - 使用适当的数据类型来存储日期。
标签: sql sql-server parsing