问题:由于设计糟糕,日期存储为字符串。格式虽然一致。
字符串始终存储为:
Revised: dd/mm/yyyy 00:00:00 §
例如:
Revised: 09/01/2019 00:00:00 §
所需的解决方案:我需要提取dd / mm / yyyy并尽可能转换为日期。
其他信息:我不知道这是什么。实际上,我必须使用convert(nvarchar, <field1>, 103)
来转换列,以获取上述输出。这是因为我使用了SELECT DISTINCT
子句,并且需要避免出现以下错误消息:
第421条消息的状态16,状态1,第1行
无法将ntext数据类型选择为DISTINCT,因为它不可比较。
答案 0 :(得分:0)
由于它遵循严格的模式,因此您可以简单地替换不属于日期时间的位,然后进行转换:
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
。
答案 1 :(得分:0)