-1

我有一个表,其中有一列,ci_birthday. 该列声明为nvarchar(50),格式为mm-dd-yyyy。表中的数据是这样的:

CI_BIRTHDAY
-----------

07/14/1956
NULL
NULL
11/01/1969
08/15/1955
07/08/1965
NULL
NULL
09/20/1936
NULL
NULL
NULL
NULL
0/0/0
NULL
NULL
NULL
NULL
NULL
0/0/0
NULL
NULL
1/29/1940
NULL
0/0/0
NULL
NULL
NULL
NULL
08/11/1949

我希望该列的输出只有月份和日期,例如

09/20
0/0 
1/29
08/11
0/0     
4

2 回答 2

0

只是为了展示如何在检查是否安全之后将这些非常混乱的数据转换为日期:

SET DATEFORMAT mdy;

WITH    Dates
          AS ( SELECT   '07/14/1956' AS DateStr
               UNION
               SELECT   '11/01/1969'
               UNION
               SELECT   '08/15/1955'
               UNION
               SELECT   '07/08/1965'
               UNION
               SELECT   '09/20/1936'
               UNION
               SELECT   '0/0/0'
               UNION
               SELECT   NULL
               UNION
               SELECT   '1/29/1940'
             )
    SELECT  CASE WHEN ISDATE(DateStr) = 1 THEN CONVERT(VARCHAR(5), CONVERT(DATE, DateStr, 101), 101)
                 ELSE '00/00'
            END AS [DD/MM]
    FROM    Dates
于 2012-06-13T18:41:01.360 回答
0

我接受我的解决方案是解决此问题的一种非常糟糕的方法,但如果日期不是以日期格式存储(在本例中为字符串),那么您可以执行以下操作:

DECLARE @Date varchar(15) = '11/01/1969'
SELECT SUBSTRING(@Date, 1,LEN(@Date) - PATINDEX('%/%',REVERSE(@Date)))
于 2012-06-13T17:58:14.950 回答