我需要将字符串转换为有效的日期格式
我尝试使用强制转换并将转换功能无效。
Convert( mystring, mm/dd/yy)
我有一个类似的字符串:2019年7月9日星期二12:00 AM以获取输出mm / dd / yy。我无法完成这项工作。
2019年7月9日,星期二,上午12:00 ---> mm / dd / yy
答案 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);
一个简单的主意是:删除工作日开头的名字。其余的则暗中起作用。