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