如何在SQL Server中将nvarchar m / d / yy转换为mm / dd / yyyy?

时间:2013-06-28 17:27:51

标签: sql sql-server type-conversion

输入为nvarchar,格式从m/d/yymm/dd/yyyy不等。如何在SQL中将其转换为mm/dd/yyyy?到目前为止,CONVERT()函数适用于m/d/yyyy格式,但适用于m/d/yy的错误。

3 个答案:

答案 0 :(得分:1)

将其投射为如下日期:

cast(@m + '/' + @d + '/' + @y as datetime)

或类似地

cast('m/d/yy' as datetime)

cast(Fieldnamehere as datetime)

答案 1 :(得分:0)

update table_name set column_name = convert(varchar,cast(column_name as date),101)或select语句select convert(varchar,cast(column_name as date),101)

答案 2 :(得分:0)

数据中通常会有一些额外的细微差别,但这里有一个我已经能够提出的入门模板......只需用convert(datetime2, [DateNVarChar], 101)替换调试文本。

CASE 
    -- x/y/zzzz to xx/yy/zzzz
    WHEN SUBSTRING([DateNVarChar], 2, 1) = '/' AND SUBSTRING([DateNVarChar], 4, 1) = '/' THEN
        'x/y/zzzz: ' + '0' + SUBSTRING([DateNVarChar], 1, 2) + '0' + SUBSTRING([DateNVarChar], 3, 20)

    -- xx/y/zzzz to xx/yy/zzzz
    WHEN SUBSTRING([DateNVarChar], 3, 1) = '/' AND SUBSTRING([DateNVarChar], 5, 1) = '/' THEN
        'xx/y/zzzz: ' + SUBSTRING([DateNVarChar], 1, 3) + '0' + SUBSTRING([DateNVarChar], 4, 20)

    -- x/yy/zzzz to xx/yy/zzzz
    WHEN SUBSTRING([DateNVarChar], 2, 1) = '/' AND SUBSTRING([DateNVarChar], 5, 1) = '/' THEN
        'x/yy/zzzz: ' + '0' + [DateNVarChar]

    ELSE
        'Normal: ' + [DateNVarChar]
END as [FormattedDate]