mysql想要获取特定月份和日期的数据

时间:2012-10-31 06:02:53

标签: mysql

a_id employee_id    date       checkin          checkout
1       1        31-10-2012   09:13:54 AM      05:30:55 PM
2       1        01-11-2012   09:34:39 AM      05:30:55 PM

我有以下关注表....我想获得所有签到并查看特定月份的时间,例如01-10-2012至31-10-2012 ....我使用过这样的东西

select `employee_id`,`date`,`checkin`,`checkout`
from `attendence` 
where `date` >= '01-10-2012'
    and `date` < '31-10-2012'

现在这个查询的问题是将结果返回给我,但是下个月的第一个日期

这是它给我的结果

 employee_id    date       checkin          checkout
     1        31-10-2012   09:13:54 AM      05:30:55 PM
     1        01-11-2012   09:34:39 AM      05:30:55 PM

我希望结果仅针对特定月份的上述查询

employee_id         date       checkin          checkout
         1        31-10-2012   09:13:54 AM      05:30:55 PM



a_id    int(11) No       
employee_id int(11) No       
date    varchar(15) No       
checkin varchar(32) No       
checkout    varchar(32) No      
plzzzz帮助我们坚持到这里:(

4 个答案:

答案 0 :(得分:10)

您可以使用DATE_FORMAT

select `employee_id`,`date`,`checkin`,`checkout`
from `attendence` 
where DATE_FORMAT(date, "%m-%Y") = "10-2012"

查看FiddleDemo它适用于我

答案 1 :(得分:3)

试试这个

select `employee_id`,`date`,`checkin`,`checkout`
from `attendence` 
where `date` BETWEEN  MONTH('01-10-2012')
AND  MONTH( '31-10-2012')

如果想要年月和月份

select `employee_id`,`date`,`checkin`,`checkout`
from `attendence` 
where `date` BETWEEN  MONTH('01-10-2012')
AND  MONTH( '31-10-2012')
AND `date` BETWEEN  YEAR('01-10-2012')
AND  YEAR( '31-10-2012')

答案 2 :(得分:0)

您应该使用datetime列的date类型进行本机日期比较。

OR

试试这个:

select `employee_id`,`date`,`checkin`,`checkout`
from `attendence` 
where DATE(`date`) >= DATE('01-10-2012')
    and DATE(`date`) < DATE('31-10-2012')

答案 3 :(得分:0)

注意DATE内的字符串格式。它应该是yyyy-MM-dd。

memset(&sa, 0, sizeof sa);