Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 如何连接数字以创建自定义日期?_Sql Server 2005 - Fatal编程技术网

Sql server 2005 如何连接数字以创建自定义日期?

Sql server 2005 如何连接数字以创建自定义日期?,sql-server-2005,Sql Server 2005,以下是我迄今为止所做的尝试: select CAST( DATEPART(month,getDate())+'-'+ DATEPART(day,getDate())+'-'+ 2012 as datetime) 我以日期结束:1905-08-02 00:00:00.0。我本来想得到今天的约会。我已经重新安排了顺序,似乎没有改变。有人能告诉我为什么它会给我这个吗?为了记录在案,我计划今年使用2012年以外的其他值。 提前谢谢 select CAST ('2012'

以下是我迄今为止所做的尝试:

select CAST(
    DATEPART(month,getDate())+'-'+
    DATEPART(day,getDate())+'-'+
    2012
    as datetime)
我以日期结束:1905-08-02 00:00:00.0。我本来想得到今天的约会。我已经重新安排了顺序,似乎没有改变。有人能告诉我为什么它会给我这个吗?为了记录在案,我计划今年使用2012年以外的其他值。 提前谢谢

select CAST ('2012'+
             CAST(DATEPART(month,getDate()) as char(2))+
             CAST(DATEPART(day,getDate()) as char(2))
            as datetime)
您必须连接字符串

如果这个小练习的目标是改变给定日期的年份,你可以这样做

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()

select 
  cast(
    cast(DATEPART(month,getDate()) as varchar(2))+'-'+
    cast(DATEPART(day,getDate()) as varchar(2))+'-'+
    '2012' as datetime)

此代码将正常工作,您需要确保连接相同的数据类型,并使用具有特定日期时间格式的convert:

            SELECT CONVERT(DATETIME,
                    CAST(DATEPART(month,getDate()) AS NVARCHAR(50))
                    +'-'+CAST(DATEPART(day,getDate()) AS NVARCHAR(50))
                    +'-2012'
                    ,121) 

选择10+'-'+17
是。。。29不是“12-17”