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帮助我们坚持到这里:(
答案 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);