从带有字符的字符串中提取日期时间

问题描述 投票:0回答:2

我正在处理一个文件,我试图从字符串中提取日期

我有以下字符串

["07/03/22 10:29:00","1.08203","1.08205","1.08177","1.08177"

我只想知道日期

07/03/22 10:29:00 

我尝试使用

CONVERT
函数,但我认为它不起作用,因为里面的字符。

谢谢

c# sql
2个回答
1
投票

如果您使用的是 SQL Server 2016 及更高版本,则以下查询将使用

STRING_SPLIT
运算符和
ISDATE()
表达式

进行工作
DECLARE @Var AS VARCHAR (200) = '["07/03/22 10:29:00","1.08203","1.08205","1.08177","1.08177"';

SELECT Splited AS DateTime 
FROM (
    SELECT REPLACE(REPLACE(value, '"', ''), '[', '') AS Splited
    FROM STRING_SPLIT (@Var, ',')
) A WHERE ISDATE (Splited) = 1

工作SQL Fiddle查询


1
投票

只要格式始终为

["<DATETIME>","1.08203"...
,那么这将为您带来最佳的性能和最少的代码量。

DECLARE @string varchar(100) = 
  '["07/03/22 10:29:00","1.08203","1.08205","1.08177","1.08177"';

SELECT (SUBSTRING(@string,3,CHARINDEX('",',@string)-3));

请注意,通过下面的 STRING_SPLIT 拆分字符串将导致优化器更加努力地工作。注意执行计划...

enter image description here

STRING_SPLIT 解决方案成本为 792,SUBSTRING 解决方案成本为 12。

© www.soinside.com 2019 - 2024. All rights reserved.