Sql 获取所选日期当月第一天和最后一天之间的数据

Sql 获取所选日期当月第一天和最后一天之间的数据,sql,Sql,如何在SQL中获取特定月份的第一天和最后一天之间的数据 下面是sql查询,请帮助 DECLARE @mydate DATETIME SELECT @mydate = GETDATE() select TransactionCode from ReceiptsPayments where ReferenceDate >= (SELECT CONVERT(VARCHAR(25), DATEADD(dd,-(DAY(

如何在SQL中获取特定月份的第一天和最后一天之间的数据

下面是sql查询,请帮助

DECLARE @mydate DATETIME
SELECT @mydate = GETDATE()
select TransactionCode from ReceiptsPayments 
where ReferenceDate >= (SELECT CONVERT(VARCHAR(25),
                                       DATEADD(dd,-(DAY(@mydate)-1),@mydate),
                                       101) AS Date_Value)
  AND ReferenceDate <= (SELECT CONVERT(VARCHAR(25),
                                       DATEADD(dd,
                                               -(DAY(DATEADD(mm,1,@mydate))),
                                               DATEADD(mm,1,@mydate)),
                                       101))
GO
试试这个-

DECLARE @mydate DATETIME
SELECT @mydate = GETDATE()

SELECT TransactionCode 
FROM dbo.ReceiptsPayments 
WHERE MONTH(ReferenceDate) = MONTH(@mydate) 
    AND YEAR(ReferenceDate) = YEAR(@mydate)
试试这个-

DECLARE @mydate DATETIME
SELECT @mydate = GETDATE()

SELECT TransactionCode 
FROM dbo.ReceiptsPayments 
WHERE MONTH(ReferenceDate) = MONTH(@mydate) 
    AND YEAR(ReferenceDate) = YEAR(@mydate)
我自己使用DATEADD/DATEDIFF模式:

这有点可爱,因为当要求它在任何月份的31号上加上一个月数时,它会自动调整到它到达的月份的正确结束日期

此外,如果列中有时间,更好的查询是:

select TransactionCode from ReceiptsPayments
where
    ReferenceDate >= DATEADD(month,DATEDIFF(month,'20010101',GETDATE()),'20010101') and
    ReferenceDate < DATEADD(month,DATEDIFF(month,'20010101',GETDATE()),'20010201')
然后使用下个月的第1个月,使用DATEADD/DATEDIFF模式执行My own take:

这有点可爱,因为当要求它在任何月份的31号上加上一个月数时,它会自动调整到它到达的月份的正确结束日期

此外,如果列中有时间,更好的查询是:

select TransactionCode from ReceiptsPayments
where
    ReferenceDate >= DATEADD(month,DATEDIFF(month,'20010101',GETDATE()),'20010101') and
    ReferenceDate < DATEADD(month,DATEDIFF(month,'20010101',GETDATE()),'20010201')

然后使用下一个月的第1个月,并执行一个if-you-want-DATA-for-specific month,然后将month放入where子句,如where-monthReferenceDate=monthReferenceDate什么是ReferenceDate类型?@chetan:在两个值之间的日期列上进行选择的查询可能能够使用该列上的索引-您的查询将无法使用这样的索引。这是用于什么数据库系统的?SQL只是许多数据库系统使用的查询语言。像日期处理这样的东西是高度特定于供应商的——那么您使用的是MySQL吗?神谕SQL Server?IBM DB2?博士后?还有别的吗?如果是:whta??GETDATE、CONVERT和DATEADD很可能是SQL Server,但正如marc_所说,请为您的问题添加一个特定的标记。如果您需要特定月份的数据,请仅将month放入where子句,如where monthReferenceDate=monthReferenceDate ReferenceDate什么是ReferenceDate类型?@chetan:在两个值之间的日期列上进行选择的查询可能能够使用该列上的索引-您的查询不会被删除能够使用这样的索引。这是什么数据库系统?SQL只是许多数据库系统使用的查询语言。像日期处理这样的东西是高度特定于供应商的——那么您使用的是MySQL吗?神谕SQL Server?IBM DB2?博士后?还有别的吗?如果是这样的话:whta??GETDATE、CONVERT和DATEADD很可能是SQL Server,但正如marc_所说,请在您的问题中添加一个特定的标记。您首先回答了一个问题。很好,你回答了第一个问题。好的。
select TransactionCode from ReceiptsPayments
where
    ReferenceDate >= DATEADD(month,DATEDIFF(month,'20010101',GETDATE()),'20010101') and
    ReferenceDate < DATEADD(month,DATEDIFF(month,'20010101',GETDATE()),'20010201')