这是使用SQL2008 R2。 我试图以这两种格式获得上个月的第一个: '06 / 01 / 2013' '2013-06-01'
我找到了这段代码,但它包括时间:
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0)
我的存储过程只需要日期 我试着用它来减少时间,但它没有用。
SELECT RIGHT(DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0),8)
答案 0 :(得分:0)
您想要的是不同的字符样式输出described here ..
SELECT CONVERT(CHAR(10), DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0), 111)
SELECT CONVERT(CHAR(10), DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0), 120)
答案 1 :(得分:0)
试试这个:
convert(varchar, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0), 101)
这是另一种有趣的方式......我正在从我的nexus打字,请原谅这个
Select cast(cast(getdate() as int) as datetime),getdate()
答案 2 :(得分:0)
试试这个,它没有字符串转换......
declare @dt DateTime = getDate()
Select DateAdd(mm,-1, DateAdd(day, 1-day(@dt),
datediff(day, 0, @dt)))
或......
declare @dt DateTime = getDate()
Select DateAdd(mm,-1, DateAdd(day, 0,
datediff(day, day(@dt)-1, @dt)))
或者,甚至更简单...... ....
declare @dt DateTime = getDate()
select dateadd(mm, datediff(mm, 1, @dt)-1, 0)
或者,允许任意几个月回来......
declare @dt DateTime = getDate()
declare @monthsBack tinyInt = 3
select dateadd(mm, datediff(mm, 1, @dt) - @monthsBack, 0)
答案 3 :(得分:0)
您的问题基本上归结为如何将datetime
转换为date
。像这样:
CONVERT(date, someDate)
所以,将它与你已经拥有的代码结合起来得到你想要的日期:
SELECT CONVERT(date, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0))