我想查询我的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());");
答案 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())