我正在将文本列导入Server 2008数据库。
我有一个字段“身体”,格式如下
'11/05/2017‘9:18:46
'10/05/2017‘1:08:27
等等。如何将其转换为适当的Server 2008日期时间(24小时)列?
我似乎找不到合适的解决办法。
我想要的结果是
'11/05/2017‘9:18:46改划为2017-05-11 09:18:46.000
'10/05/2017‘1:08:27改划为2017-05-10 13:08:27.000
提前谢谢。
到目前为止,我尝试过的是:去掉专栏中的日期部分。
select convert(date, convert(varchar(10),carcass_date)) as carcassdate这就是我一直在为时间而奋斗的简单的part..But。
谢谢你提前帮忙。
发布于 2017-05-12 04:31:41
问题在于字符串中的句点。通过删除它们,可以将字符串转换为日期时间。例如:
SELECT CAST(REPLACE(carcass_date, '.', '') AS DATETIME)发布于 2017-05-12 04:47:31
当涉及到日期转换时,我建议您始终明确。
任何类型的编程,如果没有明确的日期格式,都会引发bug。
我建议您不要使用cast,因为没有明确的格式。尽管它总是采用ISO格式,但我从未发现任何关于它如何决定其他格式的信息(包括您的非ISO格式)。
不要使用没有格式号的convert。
我建议您使用格式编号的convert。在我的系统中,这将返回两个不同的日期。强制转换返回错误的.
DECLARE @D AS VARCHAR(100) = '05/11/2017 9:18:46 a.m.'
SELECT CONVERT(DATETIME, REPLACE(@D, '.', ''), 103) as converted
SELECT CAST(REPLACE(@D, '.', '') AS DATETIME) as casted数字103被定义为dd/mm/yyyy格式。至少这样你就有了某种程度的自我文档--这就是你所期望的格式
稍后版本的SQL有parse,但它使用区域性,而不是格式字符串。
也许读一下这个
这里还有一个非决定性的讨论:
https://stackoverflow.com/questions/43929197
复制相似问题