【问题标题】:Selecting a date range using month and year code igniter使用月份和年份代码点火器选择日期范围
【发布时间】:2016-10-24 10:01:39
【问题描述】:

我想有这个功能,我可以通过只输入月份和当年从数据库中选择所有记录

我的数据库日期格式是 'YYYY-MM-DD'

例如,我选择 june 作为月份并输入,它将搜索当年的 june1-june30。

【问题讨论】:

  • WHERE DATEPART(year,datefield) = YearVariable AND DATEPART(mm,datefield) = MonthVariable
  • 我希望年份是当前年份而不输入它
  • 我刚刚发布了我的代码作为答案,看看是否符合您的要求

标签: php sql database codeigniter


【解决方案1】:

我没有收到明确的答案,所以我只是提出了所有的想法,然后我想出了这样的东西,

"SELECT * FROM attendance WHERE month(DATE) = ".$month." AND year(DATE) = YEAR(now())

其中月份输入是来自月份的数字,例如 1 - jan, 2 - feb, 等。

【讨论】:

    【解决方案2】:
    SELECT * FROM TABLE WHERE MONTH(date_field) = MonthVariable AND YEAR(date_fied) = YEAR(GETDATE())
    

    GETDATE() 返回当前日期和年份以及
    假设以月份为目标的变量(MonthVariable)包含一个每月报告的数字

    【讨论】:

      【解决方案3】:

      这将是我的解决方案。您可以将年份保留为 NULL,但您可以根据需要选择年份。

      测试数据

      IF OBJECT_ID('tempdb..#TestData') IS NOT NULL DROP TABLE #TestData
      GO
      CREATE TABLE #TestData (ID int, DateField datetime)
      INSERT INTO #TestData (ID, DateField)
      VALUES
      (1,'2016-01-01')
      ,(2,'2016-02-02')
      ,(3,'2016-01-25')
      ,(4,'2016-02-16')
      ,(5,'2015-01-12')
      ,(6,'2015-01-20')
      

      查询

      DECLARE @MonthVariable int; SET @MonthVariable = '1'
      DECLARE @YearVariable int; SET @YearVariable = '2016'
      
      SELECT
      ID
      ,Datefield
      FROM #TestData
      WHERE DATEPART(mm,DateField) = @MonthVariable
      AND (DATEPART(yy,DateField) = @YearVariable
          OR @YearVariable IS NULL)
      

      输出

      ID  Datefield
      1   2016-01-01 00:00:00.000
      3   2016-01-25 00:00:00.000
      

      如果您总是想要当前年份,那么您可以这样做;

      DECLARE @MonthVariable int; SET @MonthVariable = '1'
      
      SELECT
      ID
      ,Datefield
      FROM #TestData
      WHERE DATEPART(mm,DateField) = @MonthVariable
      AND DATEPART(yy,DateField) = DATEPART(yy,GETDATE())
      

      【讨论】:

        【解决方案4】:

        您可以尝试为以下内容构建查询

        select * from thetable where monthname(date_field) = 'February'
        

        或者month(),如果你想返回一个数字

        select * from thetable where month(date_field) = 2
        

        【讨论】:

        • 今年怎么样?我希望它是当前年份而不输入任何内容
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多