-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 に答える