查询数据库以显示基于当前日期和月份的数据总数

时间:2018-08-20 09:08:36

标签: c# sql asp.net sql-server

我想查询我的SQL数据库以根据当前日期和月份显示其中的数据总数,但是我的查询同时计算了当前日期和以前的日期。例如,如果20/08/2018有2个条目,而20/07/2018有4个条目,则返回6作为总计数,而我希望查询仅返回当前日期或月份的条目而不是以前的条目。

以下是查询:

            var today = db.QueryValue("select count(*) FROM UserName where DAY(signed_in ) = datepart(DAY, getdate());");
            var month = db.QueryValue("select count(*) FROM UserName where MONTH(signed_in ) = datepart(month,getdate());");

3 个答案:

答案 0 :(得分:2)

天数

public class TestPane extends JPanel {

    public TestPane() {
        setBackground(Color.BLACK);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        // The background is painted for us, so we don't need to
        // You shouldn't be relying on "magic" numbers anyway
        //g.setColor(Color.BLACK);
        //g.fillRect(0,0,500,600);

        g.setColor(Color.RED);
        g.fillOval(20,30,50,50);      
        // Never, ever, call repaint in here
        // bad things happen, fairies lose wings
        // black holes suck small children to oblivion
        // Fire Fly gets cancelled  
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(500, 600);
    }
}

月数

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            JFrame frame = new JFrame("Practice");
            TestPane ball = new TestPane();
            frame.add(ball);
            frame.pack();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    });

}

答案 1 :(得分:1)

day()从日期中提取月份中的某天,它不会将日期截断为该天,所以您可能会想到,因此,当然,第一个查询将返回该天中所有日期的计数的月份等于今天的月份。

要仅获取今天的数字,请尝试:

SELECT count(*)
       FROM username
       WHERE convert(date, signedin) = convert(date, getdate());

convert()变成date会丢弃时间部分(一天中的小时,分​​钟...)。

要获取月份的数字,还应包含年份。否则,您将计算任何一年中的月份。

SELECT count(*)
       FROM username
       WHERE month(signedin) = month(getdate())
             AND year(signedin) = year(getdate());

答案 2 :(得分:0)

进行这些比较的简单方法:

where cast(signed_in as date) = cast(getdate() as date)

where eomonth(signed_in) = eomonth(getdate())