问题:由于可怕的设计,日期存储为字符串。格式是一致的。
该字符串始终存储为:
Revised: dd/mm/yyyy 00:00:00 §
例如:
Revised: 09/01/2019 00:00:00 §
期望的解决方案:我需要提取dd / mm / yyyy并尽可能转换为日期。
附加信息:我不知道那个波浪是什么。我实际上必须使用convert(nvarchar, <field1>, 103)
转换列以获得高于输出。这是因为我使用SELECT DISTINCT
子句并且需要避免收到以下错误消息:
Msg 421,Level 16,State 1,Line 1 ntext数据类型不能被选为DISTINCT,因为它不具有可比性。
由于它遵循严格的模式,您可以简单地替换不属于日期时间的位,然后转换:
DECLARE @test VARCHAR(255) = 'Revised: 09/01/2019 00:00:00 §'
SELECT @test --Original value
, REPLACE(REPLACE(@test, 'Revised: ', ''), ' §', '') --Replaced value
, CONVERT(DATETIME, REPLACE(REPLACE(@test, 'Revised: ', ''), ' §', ''), 103) --Converted value
由于您的数据类型是ntext
,因此您必须先将其转换为varchar
。