-3

我正在尝试将此 sql 查询上的日期输出格式化为yyyy-mm-dd

(DATEADD(DAY,90,getdate()) output yyyy-mm-dd 00:00:00

我需要删除00:00:00

4

4 回答 4

4

看看这里

您正在寻找的格式遵循此模式 SELECT CONVERT(VARCHAR(10), GETDATE(), 120)

于 2013-05-10T15:45:31.150 回答
3

我发现 CONVERT 格式 121 通常会给我我想要的一切:

SELECT CONVERT(varchar(10), getdate(), 121)

由于我几乎总是只使用与 MilDate 兼容的可排序日期字符串,因此 121 是我必须记住的唯一样式编号。

  • 如果您只想要日期,那么如上所述,将VARCHAR长度限制为 10。

  • 如果您只想HH:MM:SS使用VARCHAR(19)并将其包装在RIGHT(.., 8).

  • 如果您想在计时测量中包含毫秒,只需使用 VARCHAR(23)。

如果您不记得字符串的长度和偏移量,只需使用 VARCHAR(MAX):

SELECT CONVERT(varchar(MAX), getdate(), 121)

然后从输出中算出它,并将长度更改为RIGHT(..)您需要的长度。比每次我需要格式化 DateTime时都要翻阅庞大的CAST And CONVERT 文档页面要容易得多。

于 2013-05-10T15:44:46.630 回答
1

使用DATE_FORMAT函数,如下所示:

DATE_FORMAT(DATEADD(DAY,90,getdate()), '%Y-%m-%d');
于 2013-05-10T15:44:49.023 回答
0

只需要添加一个CONVERT. 测试这段代码:

DECLARE @test DATE
SET @test = CONVERT(DATE, DATEADD(DAY, 90, GETDATE()))
SELECT @test

甚至更容易测试:

SELECT CONVERT(DATE, DATEADD(DAY, 90, GETDATE()))

编辑

正如@RBarryYoung 评论的那样,确实取决于您的配置,它可以返回不同的日期格式,而不是您所要求的格式。在此案例编号 121 上使用CONVERT精确指定您想要的样式。查看Microsoft BOL以获取有关样式和使用的更多信息CONVERT

SELECT CONVERT(VARCHAR(10), GETDATE(), 121)

两者都返回:

2013-08-08
于 2013-05-10T15:44:01.130 回答