这是我迄今为止尝试过的:
select CAST(
DATEPART(month,getDate())+'-'+
DATEPART(day,getDate())+'-'+
2012
as datetime)
我以日期结束:1905-08-02 00:00:00.0。我期待得到今天的约会。我重新排列了顺序,它似乎没有改变。谁能提供为什么它给我这个?作为记录,我计划在今年使用 2012 年以外的其他值。提前致谢。
这是我迄今为止尝试过的:
select CAST(
DATEPART(month,getDate())+'-'+
DATEPART(day,getDate())+'-'+
2012
as datetime)
我以日期结束:1905-08-02 00:00:00.0。我期待得到今天的约会。我重新排列了顺序,它似乎没有改变。谁能提供为什么它给我这个?作为记录,我计划在今年使用 2012 年以外的其他值。提前致谢。
此代码将起作用,您需要确保连接相同的数据类型并使用特定日期时间格式的转换:
SELECT CONVERT(DATETIME,
CAST(DATEPART(month,getDate()) AS NVARCHAR(50))
+'-'+CAST(DATEPART(day,getDate()) AS NVARCHAR(50))
+'-2012'
,121)
select CAST ('2012'+
CAST(DATEPART(month,getDate()) as char(2))+
CAST(DATEPART(day,getDate()) as char(2))
as datetime)
您必须连接字符串。您的代码将数字2039
转换为 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())))
CAST()
每件首先作为varchar:
select
cast(
cast(DATEPART(month,getDate()) as varchar(2))+'-'+
cast(DATEPART(day,getDate()) as varchar(2))+'-'+
'2012' as datetime)