从 varchar 到 Datetime 的转换
Conversion from varchar to Datetime
我有一个数据类型为 varchar 的日期字段,其中一些值是例如 20220101000009CS。
我需要将日期显示为 (MM/dd/yyyy HH:mm:ss') 并尝试了以下查询但收到错误 'Conversion failed when converting date and/or time from character string.'
select convert(datetime, 'DATE',20)
from [TABLE1].[dbo].[ABC]
请指教我如何解决这个问题。
您可以使用 STUFF
在正确的位置插入所需的字符以获得格式 yyyyMMdd hh:mm:ss
这在 SQL 服务器中也是明确的:
SELECT V.YourColumn,
CONVERT(datetime2(0),STUFF(STUFF(STUFF(LEFT(V.YourColumn,14),13,0,':'),11,0,':'),9,0,' '))
FROM (VALUES('20220101000009CS'))V(YourColumn);
这样的怎么样?
SELECT DATETIMEFROMPARTS(
SUBSTRING(datefield, 1, 4),
SUBSTRING(datefield, 5, 2),
SUBSTRING(datefield, 7, 2),
SUBSTRING(datefield, 9, 2),
SUBSTRING(datefield, 11, 2),
SUBSTRING(datefield, 13, 2),
0)
FROM [TABLE1].[dbo].[ABC];
我有一个数据类型为 varchar 的日期字段,其中一些值是例如 20220101000009CS。 我需要将日期显示为 (MM/dd/yyyy HH:mm:ss') 并尝试了以下查询但收到错误 'Conversion failed when converting date and/or time from character string.'
select convert(datetime, 'DATE',20)
from [TABLE1].[dbo].[ABC]
请指教我如何解决这个问题。
您可以使用 STUFF
在正确的位置插入所需的字符以获得格式 yyyyMMdd hh:mm:ss
这在 SQL 服务器中也是明确的:
SELECT V.YourColumn,
CONVERT(datetime2(0),STUFF(STUFF(STUFF(LEFT(V.YourColumn,14),13,0,':'),11,0,':'),9,0,' '))
FROM (VALUES('20220101000009CS'))V(YourColumn);
这样的怎么样?
SELECT DATETIMEFROMPARTS(
SUBSTRING(datefield, 1, 4),
SUBSTRING(datefield, 5, 2),
SUBSTRING(datefield, 7, 2),
SUBSTRING(datefield, 9, 2),
SUBSTRING(datefield, 11, 2),
SUBSTRING(datefield, 13, 2),
0)
FROM [TABLE1].[dbo].[ABC];