字符串转换为有效日期

时间:2019-08-06 07:36:30

标签: sql-server tsql date type-conversion

我需要将字符串转换为有效的日期格式

我尝试使用强制转换并将转换功能无效。

Convert( mystring, mm/dd/yy)

我有一个类似的字符串:2019年7月9日星期二12:00 AM以获取输出mm / dd / yy。我无法完成这项工作。

2019年7月9日,星期二,上午12:00 ---> mm / dd / yy

2 个答案:

答案 0 :(得分:3)

尝试一下:

SELECT TRY_PARSE('Tuesday, July 09, 2019 12:00 AM' AS DATETIME USING 'en-US')

转换为有效日期。

然后:

SELECT CONVERT(VARCHAR(10), TRY_PARSE('Tuesday, July 09, 2019 12:00 AM' AS DATETIME USING 'en-US'), 101)

将其转换为mm/dd/yy

答案 1 :(得分:2)

Larnu作为注释提供了最重要的提示:不要将日期存储为字符串,而应使用本机日期格式并仅在输出方案中考虑字符串格式。

因此,希望您正在尝试解决此技术问题,因此需要进行此转换才能将值存储在整齐的列中;-)

gotqn的建议是最好的,因为您显然需要使用特定的语言/文化,并且TRY_PARSE是允许指定此参数的唯一方法。 TRY_PARSE至少需要v2012,并且-这可能是一个缺点,它确实很慢。

因此,如果这是一个单程票(只是一次转换,以便正确存储您的值)并且您的行数非常多,则可以采用以下路线: / p>

DECLARE @yourstring VARCHAR(100)='Tuesday, July 09, 2019 12:00 AM';

SET LANGUAGE ENGLISH;
SELECT CAST(SUBSTRING(@yourstring,CHARINDEX(',',@yourstring)+1,100) AS datetime);

一个简单的主意是:删除工作日开头的名字。其余的则暗中起作用。