2013-02-20 79 views
0

我试图选择在特定月份中输入的所有发票。SQL:如何选择日期字段是特定的月份?

数据库中的'entry_datetime'字段格式为'2013-02-19 14:47:42'。

我正在使用MySQL。

这是我到目前为止有:

SELECT 
    id 
FROM 
    invoices 
WHERE 
    entry_datetime > 2012/12/31 AND entry_datetime < 2013/02/01 

可惜这不是返回任何结果,但我可以看到通过phpMyAdmin的一个合格的发票。

请你能告诉我where子句有什么问题吗?

回答

2

试试这个:

SELECT 
    id 
FROM 
    invoices 
WHERE 
    entry_datetime > '2012/12/31' AND entry_datetime < '2013/02/01' 
+0

谢谢,但我修改了我的代码建议,它仍然没有选择entry_datetime'2013-01-19 14:49:38' – 2013-02-20 04:36:15

+1

你确定吗?该查询将抓取2012年12月31日至2013年2月1日之间的数据 – 2013-02-20 04:38:48

+0

我直接从phpMyadmin复制并粘贴了entry_datetime(2013-01-19 14:49:38)。我怀疑这是可能导致此失败的时间部分? – 2013-02-20 04:54:50

0

由于在where子句中不加括号,MySQL假设这是一个数学公式/方程的日期。所以它将2012/12/31评估为5.4086。

5

另一种方式来做到这一点:

SELECT 
    id 
FROM 
    invoices 
WHERE 
    entry_datetime between '2012/12/31' AND '2013/02/01'; 

如果你想获得一个特定月份的结果,然后使用类似功能: 月()为:

SELECT 
    id 
FROM 
    invoices 
WHERE 
    MONTH(entry_datetime)=12; 

,其中12个月mumber

相关问题