2012-08-01 68 views
1

我有一个查询,得到的是一个字段在程序中的日期。这个日期必须修改10年。需要一个日期而不是日期时间在SQL Server 2005 with dateadd

我所做的查询是

SELECT DATEADD(yy, +10, '"+thisfield.value+"') 

其中'"+thisfield.value+"'从程序来和填充像01-08-2012

查询结果为2022-07-31 00:00:00.000。我的问题是,我只需要2022-08-01,但格式为01-08-2022,这样我就可以自动填充其他字段的结果。

在SQL Server 2005中,日期函数不能使用日期时间函数,我只是不需要。

我希望这是明确的(第一次我发布的东西)。谁能帮我?

+0

真的,您不应该首先像这样构建您的SQL,以获得性能和SQL注入漏洞。使用参数化查询的正确方式。 – Bridge 2012-08-01 09:12:27

回答

0

您可以截断结果,或使用样式101是在格式mm/dd/yyyy的,这恰好是你想要的格式,将它转换为DATE

CAST(DATEADD(yy, +10, '"+thisfield.value+"') AS DATE)" 

CONVERT(VARCHAR, DATEADD(yy, +10, '"+thisfield.value+"'), 101)" 

CONVERT。请记住,您可以根据需要在应用程序中对结果进行格式化,以便进行显示,这比从SQL Server返回字符串要好。

另请注意,您应该查看参数化查询和/或存储过程。

+0

感谢您的反应。第一个答案不起作用。我得到错误:类型DATE不是一个定义的系统类型。 – user1567962 2012-08-01 09:34:22

+0

但第二个答案是解决方案。 – user1567962 2012-08-01 09:35:02

+0

@ user1567962 - 同意。使答案更清楚。 – 2012-08-01 09:40:08

相关问题