2017-04-02 13 views
0

異なる列のdatepartを組み合わせて自分の日付を作成しようとしています。私のコードは以下の通りです:SQL Serverでdatepartを作成して新しいdatetimeを作成する

CAST((datepart(yy,[FIRST_INSTALL_DATE]) 
    + '-' 
    + datepart(mm,[INSTALL_DATE]) 
    + '-' 
    + datepart(dd,[INSTALL_DATE])) as Datetime) AS [Install_Date], 

(FIRST_INSTALL_DATEの値は、2014年1月1日で、INSTALL_DATEの値は、1900年8月7日であるところ。)

しかし、私はそれをすることになっている場合、以下の出力を得ます2014年8月7日00:00:00.000

1905-08-07 00:00:00.000 

私はすべてのアイデアを感謝しています。ありがとう。

+0

どのSQL Serverバージョン? – McNets

+0

表示されたデータを生成した問題のレコードの 'FIRST_INSTALL_DATE'の値は何ですか? –

+1

2012年を考慮するとDateFromParts() –

答えて

3

基本的にはそれをCONCATする前に、あなたはVARCHARにすべてのDATEPARTを変換する必要があります

2014 +- 03 +- 02 

、番号を​​追加しようとしています。

CAST(DATEPART(YY, FIRST_INSTALL_DATE) AS varchar(10)) 

SQL-Server 2012の

DECLARE @FIRST_INSTALL_DATE datetime = '2016/01/01 00:00:00'; 
DECLARE @INSTALL_DATE datetime = '2017/02/03 00:00:00'; 


SELECT DATEFROMPARTS (datepart(yyyy, @FIRST_INSTALL_DATE), 
         datepart(MM,@INSTALL_DATE), 
         datepart(dd,@INSTALL_DATE)) AS InstallDate; 

GO 
 
| InstallDate   | 
| :------------------ | 
| 03/02/2016 00:00:00 | 

dbfiddle here

0

私はあなたがたときに共同ISO 8601 YYYYMMDD形式を使用すべきだと思います日時に戻す

SELECT 
CAST(
    CAST(datepart(yy,[FIRST_INSTALL_DATE]) AS VARCHAR(4)) + 
    RIGHT('0' + CAST(datepart(mm,[INSTALL_DATE]) AS VARCHAR(2)), 2) + 
    RIGHT('0' + CAST(datepart(dd,[INSTALL_DATE]) AS VARCHAR(2)), 2) 
AS DATETIME) AS [Install_Date], 
+0

**「文字列から日付および/または時刻を変換すると変換に失敗しました」というエラーが表示される** – BTurkeli

関連する問題