这是使用 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)
这是使用 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)
您想要的似乎是此处描述的不同字符样式输出..
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)
尝试这个:
convert(varchar, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0), 101)
这是另一种有趣的方式...我正在从我的关系中输入,请原谅
Select cast(cast(getdate() as int) as datetime),getdate()
试试这个,它没有字符串转换......
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)
您的问题基本上归结为如何将 a 转换datetime
为 a date
。像这样:
CONVERT(date, someDate)
因此,将其与您已经获得所需日期的代码相结合:
SELECT CONVERT(date, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0))