如何从输入的日期获取上个月的最后一天?
How can I get the last day of the previous month from a date entered?
我正在编写存储过程,存储过程需要输入日期:
DECLARE @dateCurrent AS DATE = '10/31/2014'
// 让我们声明“10/31/2014”是用户输入。
根据输入的日期,我想将以下变量设置为:
DECLARE @datePrior AS DATE = PreviousMonth(@dateCurrent)
其中 PreviousMonthLastDayOfPreviousMonth(@dateCurrent) == '9/30/2014'
因此,如果用户输入“2014 年 10 月 31 日”,则应将以下变量设置为“2014 年 9 月 30 日”,这实际上是从输入日期算起的上个月的最后一天。
感谢您的帮助!
一个常用的方法是将一个月的第一天减去1天:
SELECT DATEADD(DAY,-1,CONVERT(VARCHAR(6),@dateCurrent,112)+'01')
与 Lamak 相同的答案,但日期格式
select dateadd(day,-1,DATEADD(MM, DATEDIFF(MM,0,GETDATE()),0))
declare @dateCurrent date = '9/30/2014'
select DATEADD(MONTH, DATEDIFF(MONTH, -1, @dateCurrent)-1, -1)
您想先将字符串转换为日期。然后您可以使用 datediff 来计算现在和输入日期的当月开始之间的差异。将该差异添加到输入日期,您就得到了上个月的月底。像...
SELECT DATEADD(s, -1, DATEADD(mm, DATEDIFF(m, 0, CAST('10/31/2014' as datetime)),0))
另一种方法是:
DECLARE @date datetime = GETDATE()
SELECT DATEADD(DAY, -(DAY(@date)), @date)
这将从今天减去当月过去的天数和 return 上个月最后一天的日期。
我正在编写存储过程,存储过程需要输入日期:
DECLARE @dateCurrent AS DATE = '10/31/2014'
// 让我们声明“10/31/2014”是用户输入。
根据输入的日期,我想将以下变量设置为:
DECLARE @datePrior AS DATE = PreviousMonth(@dateCurrent)
其中 PreviousMonthLastDayOfPreviousMonth(@dateCurrent) == '9/30/2014'
因此,如果用户输入“2014 年 10 月 31 日”,则应将以下变量设置为“2014 年 9 月 30 日”,这实际上是从输入日期算起的上个月的最后一天。
感谢您的帮助!
一个常用的方法是将一个月的第一天减去1天:
SELECT DATEADD(DAY,-1,CONVERT(VARCHAR(6),@dateCurrent,112)+'01')
与 Lamak 相同的答案,但日期格式
select dateadd(day,-1,DATEADD(MM, DATEDIFF(MM,0,GETDATE()),0))
declare @dateCurrent date = '9/30/2014'
select DATEADD(MONTH, DATEDIFF(MONTH, -1, @dateCurrent)-1, -1)
您想先将字符串转换为日期。然后您可以使用 datediff 来计算现在和输入日期的当月开始之间的差异。将该差异添加到输入日期,您就得到了上个月的月底。像...
SELECT DATEADD(s, -1, DATEADD(mm, DATEDIFF(m, 0, CAST('10/31/2014' as datetime)),0))
另一种方法是:
DECLARE @date datetime = GETDATE()
SELECT DATEADD(DAY, -(DAY(@date)), @date)
这将从今天减去当月过去的天数和 return 上个月最后一天的日期。