#从日期开始的月份和日期#

时间:2012-06-13 15:54:35

标签: sql tsql sql-server-2008-r2

我有一个表格,其中有一列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     

2 个答案:

答案 0 :(得分:0)

我接受我的解决方案是解决此问题的一种非常糟糕的方法但是如果日期没有以日期格式存储(在这种情况下是一个字符串),那么你可以这样做:

DECLARE @Date varchar(15) = '11/01/1969'
SELECT SUBSTRING(@Date, 1,LEN(@Date) - PATINDEX('%/%',REVERSE(@Date)))

答案 1 :(得分: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