操作DATEADD以正确的格式显示日期

时间:2015-01-14 15:10:20

标签: sql sql-server-2008

我知道这是一个简单的解决办法,但它一整天都在努力!我创建了一个临时表,我想输入上个月第一天的日期,所以我使用过:

DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) as [Last Month]

哪个用2014-12-01填充我的表格,但我希望它以12/01/2014形式出现。我已经多次尝试过这项工作,但我似乎无法让它工作,我试图将DATEADD合并到以下SQL语句中,但无法让它运行!

replace(LEFT(convert(NVARCHAR, getdate(), 106),6) + '/' + RIGHT(year(convert(NVARCHAR, getdate(), 106)),2), ' ', '/') as [Last Month],

我要插入的列是DATE

类型

2 个答案:

答案 0 :(得分:1)

使用:

CONVERT(VARCHAR,DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0),103)

转化类型列在以下链接中: http://msdn.microsoft.com/en-GB/library/ms187928.aspx

答案 1 :(得分:1)

DATE是具有指定格式的数据类型,SQL Server的默认值为YYYY-MM-DD。当您操纵日期格式,然后将其推回DATE字段时,它会将操纵日期转换为标准DATE格式进行存储(只要操作日期仍在SQL&之一中) #39;接受的格式)。

您可以在使用CONVERT(VARCHAR,...)检索时更改显示的格式。您不应将日期存储为VARCHAR(),只是为了保留所需的格式类型,这会破坏您正确使用日期的能力,每次使用都需要CAST() / CONVERT()