这是我到目前为止所尝试的内容:
select CAST(
DATEPART(month,getDate())+'-'+
DATEPART(day,getDate())+'-'+
2012
as datetime)
我最终得到的日期是:1905-08-02 00:00:00.0。我期待今天的约会。我重新排列了顺序,似乎没有改变。任何人都可以提供为什么它给我这个?为了记录,我计划使用2012年以外的其他值。 提前谢谢。
答案 0 :(得分:0)
select CAST ('2012'+
CAST(DATEPART(month,getDate()) as char(2))+
CAST(DATEPART(day,getDate()) as char(2))
as datetime)
你必须连接字符串。 Your code is casting the number 2039
to date
如果这个小练习的目标是能够改变给定日期的年份,你可以这样做。
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())))
答案 1 :(得分:0)
CAST()
每件作为varchar优先:
select
cast(
cast(DATEPART(month,getDate()) as varchar(2))+'-'+
cast(DATEPART(day,getDate()) as varchar(2))+'-'+
'2012' as datetime)
答案 2 :(得分:0)
此代码可以使用,您需要确保连接相同的数据类型并使用具有特定DateTime格式的转换:
SELECT CONVERT(DATETIME,
CAST(DATEPART(month,getDate()) AS NVARCHAR(50))
+'-'+CAST(DATEPART(day,getDate()) AS NVARCHAR(50))
+'-2012'
,121)