Sql server 我需要将开始日期和结束日期设置为存储过程中的变量
我的要求是将@STARTDATE变量设置为01[开始日期]-月[当前月份]-年[当前年份],并基于2月28日、1月31日的月@ENDDATE变化Sql server 我需要将开始日期和结束日期设置为存储过程中的变量,sql-server,Sql Server,我的要求是将@STARTDATE变量设置为01[开始日期]-月[当前月份]-年[当前年份],并基于2月28日、1月31日的月@ENDDATE变化 DECLARE @STARTDATE DATETIME DECLARE @ENDDATE DATETIME 我们根据月份划分结束日期 DECLARE @MONTH int SET @MONTH=(select MONTH(getdate())) 在这里,我无法在STARTDATE中显示日期 SET @STARTDAT
DECLARE @STARTDATE DATETIME
DECLARE @ENDDATE DATETIME
我们根据月份划分结束日期
DECLARE @MONTH int
SET @MONTH=(select MONTH(getdate()))
在这里,我无法在STARTDATE中显示日期
SET @STARTDATE = '01-+@MONTH+-+YEAR+'
IF (
@MONTH = 4
OR @MONTH = 6
)
SET @ENDDATE = '30-+@MONTH+-+YEAR+'
IF (@MONTH / 4 = 0)
SET @ENDDATE = '29-+@MONTH+-+YEAR+'
ELSE
SET @ENDDATE = '28-+@MONTH+-+YEAR+'
引入了SQL Server 2012,它返回引用月份的最后日期 这里有一个例子
SELECT EOMONTH(GETDATE())
引入了SQL Server 2012,它返回引用月份的最后日期 这里有一个例子
SELECT EOMONTH(GETDATE())
找到@startdate后,当我们试图检索
@startdate
和@ENDDATE
之间的数据时,只需添加1个月,然后使用DATEADD()函数减去1天。找到@startdate后,只需添加1个月,然后使用DATEADD()函数减去1天。则不会检索交易日期与@ENDDATE
相同的记录。因为@ENDDATE
的时间是凌晨12:00。@Nimesh-如果您想搜索包含时间成分的日期时间数据,通常最好使用一个专用的搜索终点(即,在这里您将@ENDDATE
设置为下个月的1号),然后使用@Nimesh Damien是正确的。但是,当您试图筛选记录时,如果事务日期包含时间,则不会检索到上次日期的记录。@danta和Nimesh的问题是询问当前月份的第一天和最后一天。我认为你的推测是不正确的,因为这些日期的用途还没有描述。当我们试图检索@STARTDATE
和@ENDDATE
之间的数据时。则不会检索交易日期与@ENDDATE
相同的记录。因为@ENDDATE
的时间是凌晨12:00。@Nimesh-如果您想搜索包含时间成分的日期时间数据,通常最好使用一个专用的搜索终点(即,在这里您将@ENDDATE
设置为下个月的1号),然后使用@Nimesh Damien是正确的。但是,当您试图筛选记录时,如果事务日期包含时间,则不会检索到上次日期的记录。@danta和Nimesh的问题是询问当前月份的第一天和最后一天。我认为你的猜测是不正确的,因为这些日期的目的还没有被描述。