1

月が> = 10の場合、mddyyまたはmmddyy(数値形式)からmmddyy日付形式に変換する必要がある日付フィールドがあります。ウェブ上でまだ答えを見つけていません。

4

3 に答える 3

0

これは、私が求めていた一般的な外観でそれを取得します。

select
CASE WHEN LEN(CONVERT(varchar(6), datefield)) < 6
THEN ('0' + LEFT(CONVERT(varchar(6), datefield),1) + '-' +
      SUBSTRING(CONVERT(varchar(6), datefield),2,2) + '-' +
      LEFT(CONVERT(varchar(7), datefield),4))
ELSE (LEFT(CONVERT(varchar(6), datefield),2) + '-' +
      SUBSTRING(CONVERT(varchar(6), datefield),3,2) + '-' +
     LEFT(CONVERT(varchar(7), datefield),4))
END as DesiredDate
于 2013-08-15T20:53:45.263 に答える
0

My above solution technically does not work nor is consistent with SQL's system-wide setting in SQL Server - the "two-digit year cutoff". Typically SQL Server considers any date with a 2 digit year or value of 49 as 20xx year or 2049. Dates with a 2 digit year after that, say 70 get interpreted as 19xx (70 -> 1970). Thanks to marc_s for his post on the topic. My solution does not require a custom function or SQL Server setting change, and it does account for both one and two digit months. It is:

Select
Convert (datetime, --varchar depending on desired format--
         CASE 
    WHEN         LEN(CONVERT(varchar(6), dt.datefield))     <  6 and
           SUBSTRING(CONVERT(varchar(6), dt.datefield),4,2) <  50
    THEN ('0' + LEFT(CONVERT(varchar(6), dt.datefield),1))  + '-' +
           SUBSTRING(CONVERT(varchar(6), dt.datefield),2,2) + '-' +
         ('20'+RIGHT(CONVERT(varchar(6), dt.datefield),2))
    WHEN         LEN(CONVERT(varchar(6), dt.datefield))     =  6 and
           SUBSTRING(CONVERT(varchar(6), dt.datefield),5,2) <  50
    THEN          (LEFT(CONVERT(varchar(6), dt.datefield),2))  + '-' +
           SUBSTRING(CONVERT(varchar(6), dt.datefield),2,2) + '-' +
         ('20'+RIGHT(CONVERT(varchar(6), dt.datefield),2))
    WHEN         LEN(CONVERT(varchar(6), dt.datefield))     <  6 and
      SUBSTRING(CONVERT(varchar(6), dt.datefield),4,2) >= 50
    THEN ('0' + LEFT(CONVERT(varchar(6), dt.datefield),1))  + '-' +
           SUBSTRING(CONVERT(varchar(6), dt.datefield),5,2) + '-' +
         ('19'+RIGHT(CONVERT(varchar(6), dt.datefield),2)) 
    WHEN         LEN(CONVERT(varchar(6), dt.datefield))     =  6 and
           SUBSTRING(CONVERT(varchar(6), dt.datefield),5,2) >= 50
    THEN       (LEFT(CONVERT(varchar(6), dt.datefield),2))  + '-' +
                SUBSTRING(CONVERT(varchar(6), dt.datefield),2,2) + '-' +
    ('19'+(LEFT(CONVERT(varchar(7), dt.datefield),2)))
    End) as MaintDate 
FROM   
dbo.date_table dt
于 2013-08-22T16:14:44.187 に答える
0

FORMATを使用できます:-

FORMAT ( table.myDateColumn, 'd', 'en-US' )

編集:-

これを試して:-

SELECT LTRIM(STR(MONTH(DateColumn)))+'/'+LTRIM(STR(DAY(DateColumn)))+'/'+STR(YEAR(DateColumn),4)
于 2013-08-15T17:48:53.913 に答える