1

これが私がこれまでに試したことです:

select CAST(
    DATEPART(month,getDate())+'-'+
    DATEPART(day,getDate())+'-'+
    2012
    as datetime)

日付は 1905-08-02 00:00:00.0 になります。今日の日付を期待していました。順番を並べ替えましたが、変わらないようです。なぜそれが私にこれを与えるのかについて誰かが提供できますか? 念のため、2012 年以外の値を使用する予定です。前もって感謝します。

4

3 に答える 3

0

CAST()最初に各ピースを varchar として:

select 
  cast(
    cast(DATEPART(month,getDate()) as varchar(2))+'-'+
    cast(DATEPART(day,getDate()) as varchar(2))+'-'+
    '2012' as datetime)
于 2012-10-17T14:01:43.970 に答える
0

このコードは機能します。同じデータ型を連結していることを確認し、convert を特定の DateTime 形式で使用する必要があります。

            SELECT CONVERT(DATETIME,
                    CAST(DATEPART(month,getDate()) AS NVARCHAR(50))
                    +'-'+CAST(DATEPART(day,getDate()) AS NVARCHAR(50))
                    +'-2012'
                    ,121) 
于 2012-10-18T10:05:09.870 に答える
0
select CAST ('2012'+
             CAST(DATEPART(month,getDate()) as char(2))+
             CAST(DATEPART(day,getDate()) as char(2))
            as datetime)

文字列を連結する必要があります。あなたのコードは番号2039を日付にキャストしています。

この簡単な演習の目的が、特定の日付の年を変更できるようにすることである場合は、代わりに次のようにすることができます。

declare @NewYear int = 2003

-- with time part
select dateadd(year, @NewYear - year(getdate()), getdate())

-- time part removed
select dateadd(year, @NewYear - year(getdate()), dateadd(day, 0, datediff(day, 0, getdate())))
于 2012-10-17T14:01:13.890 に答える