SQL 服务器:如何将此字符串转换为日期时间?
SQL Server : how to convert this string to date time?
我一直在查询,但我仍然偶尔遇到挑战。我有一个 SQL Server 2014 数据库,我正在提取一个应该包含日期时间值的特定列,但它却有这种可怕的乱码,它以 Varchar(2000)
:
0:2018061503410000:0.000000:35:0
我需要将其转换为显示真实的日期时间,例如 6-15-2018 03:41 AM
甚至 2018-6-15 3:41
到目前为止,我已经能够将其转换为:201806150341
。
通过使用此 SQL 语句:
left(replace(o.dsply_val, '0:', ''), 12) as RRT_Arrival_Time1
但是在我将它导出到 Excel 之后,我仍然很难将其屏蔽以显示为日期或其他任何内容。 Excel 想把它读成数字,但是当我转换为日期时间时,它读起来不正确。
如有任何帮助,我们将不胜感激。我的报告已经有了 25 个数据点,但这个数据点让我大吃一惊:)
谢谢大家
爱德华
您可以使用一些子字符串和填充进行转换,然后转换为日期时间。即:
select cast(stuff(stuff(substring(o.dsply_val,3,12),11,0,':'),9,0,' ') as datetime) as RRT_Arrival_Time1
from myTable o;
这里我们做的是,首先获取它的一个子串来提取 201806150341 部分,然后填充一个 : 和一个 space 所以它变成 '20180615 03:41' 我们可以简单地转换为日期时间。
HTH
好吧,你可以尝试 convert()
你已经提取的字符串作为 bigint
,使用 format()
来制作它的更常见的日期时间表达式和 convert()
这到 datetime
.
convert(datetime,
format(convert(bigint,
left(replace(o.dsply_val,
'0:',
''),
12)),
'0000-00-00 00:00')
+
':00',
120)
我一直在查询,但我仍然偶尔遇到挑战。我有一个 SQL Server 2014 数据库,我正在提取一个应该包含日期时间值的特定列,但它却有这种可怕的乱码,它以 Varchar(2000)
:
0:2018061503410000:0.000000:35:0
我需要将其转换为显示真实的日期时间,例如 6-15-2018 03:41 AM
甚至 2018-6-15 3:41
到目前为止,我已经能够将其转换为:201806150341
。
通过使用此 SQL 语句:
left(replace(o.dsply_val, '0:', ''), 12) as RRT_Arrival_Time1
但是在我将它导出到 Excel 之后,我仍然很难将其屏蔽以显示为日期或其他任何内容。 Excel 想把它读成数字,但是当我转换为日期时间时,它读起来不正确。
如有任何帮助,我们将不胜感激。我的报告已经有了 25 个数据点,但这个数据点让我大吃一惊:)
谢谢大家
爱德华
您可以使用一些子字符串和填充进行转换,然后转换为日期时间。即:
select cast(stuff(stuff(substring(o.dsply_val,3,12),11,0,':'),9,0,' ') as datetime) as RRT_Arrival_Time1
from myTable o;
这里我们做的是,首先获取它的一个子串来提取 201806150341 部分,然后填充一个 : 和一个 space 所以它变成 '20180615 03:41' 我们可以简单地转换为日期时间。
HTH
好吧,你可以尝试 convert()
你已经提取的字符串作为 bigint
,使用 format()
来制作它的更常见的日期时间表达式和 convert()
这到 datetime
.
convert(datetime,
format(convert(bigint,
left(replace(o.dsply_val,
'0:',
''),
12)),
'0000-00-00 00:00')
+
':00',
120)