SQL:如何查询给定日期的月内所有数据?

时间:2015-12-04 06:57:08

标签: sql-server

我有tbl1ID个数字表及其相应的会员日期。

我想创建一个stored procedure,其中提供了@member_date参数。我希望该程序获得 @member_date 月份和年份,以便按月和日期获取所有记录

ID_Number   Member_Date
10001        12/1/2015
10002        12/15/2015
10003        10/9/2015
10004        12/13/2014

如下所示:

@member_date = '12/25/2015'
Select * from tbl1 where month(Member_Date)=12 and year(Member_Date)=2015

输出:

ID_Number   Member_Date
10001        12/1/2015
10002        12/15/2015

感谢您的帮助 非常感谢

3 个答案:

答案 0 :(得分:1)

我仍然没有让你正常,但我认为你想要下面的东西,

CREATE TABLE RYANTABLE (ID_NUMBER  INT, MEMBER_DATE DATE)
INSERT INTO RYANTABLE VALUES (10001,'12/1/2015')
INSERT INTO RYANTABLE VALUES (10002,'12/15/2015')
INSERT INTO RYANTABLE VALUES (10003,'10/9/2015')
INSERT INTO RYANTABLE VALUES (10004,'12/13/2014')

您需要如下所示的商店程序吗?

--EXEC RyanProcedure '12/25/2015' 
CREATE PROCEDURE RyanProcedure
    @member_date DATE
AS
BEGIN
    DECLARE @MONTH AS INT=MONTH(@member_date)
    DECLARE @Year AS INT=YEAR(@member_date)

    SELECT *
    FROM   RyanTable
    WHERE  (MONTH(Member_Date) = @MONTH  
           AND YEAR(Member_Date) = @Year)
           OR (Member_Date = @member_date)
END

答案 1 :(得分:0)

你可以使用

SELECT * FROM TBL1 WHERE DATE_FORMAT(Member_Date, '%Y%m') = '201512'

例如

$array = range(1.00, 1.99, 0.01);
var_dump($array);

%Y年,数字,四位数,

%m月,数字(00-12)

对于日期格式,您可以在here

中看到

答案 2 :(得分:0)

您应该查询Sargable以获得最佳效果

DECLARE @member_date date= '12/25/2015'

SELECT *
FROM
  tbl1
WHERE 
  Member_Date >= dateadd(month, datediff(month, 0, @member_date), 0)
  Member_Date < dateadd(month, datediff(month, -1, @member_date), 0)