我知道这是一个简单的解决办法,但它一整天都在努力!我创建了一个临时表,我想输入上个月第一天的日期,所以我使用过:
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
答案 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()
。