Mysql 如何按日期顺序解决问题
事实上,我在db中保存了dd/mm/yyyy格式的日期。“订购方式”不起作用。没有SQL错误,但日期不符合顺序。以下是您的查询:Mysql 如何按日期顺序解决问题,mysql,sql,Mysql,Sql,事实上,我在db中保存了dd/mm/yyyy格式的日期。“订购方式”不起作用。没有SQL错误,但日期不符合顺序。以下是您的查询: SELECT COUNT(patient_id) AS idpateint, patient_id FROM patient WHERE STR_TO_DATE(date_enter,'%d/%m/%Y' ) BETWEEN STR_TO_DATE( '$repeat','%d/%m/%Y' ) AND STR_TO_DATE('$to
SELECT COUNT(patient_id) AS idpateint,
patient_id
FROM patient
WHERE STR_TO_DATE(date_enter,'%d/%m/%Y' )
BETWEEN STR_TO_DATE( '$repeat','%d/%m/%Y' ) AND STR_TO_DATE('$to','%d/%m/%Y')
AND patient_type='opd'
AND patient_id ='$idpatient1'
ORDER BY STR_TO_DATE(date_enter,'%d/%m/%Y' )
在选择中有一个count()
。这会将查询转换为聚合查询,因此它只返回一行。此外,您只选择了一个患者id。我可以想象,您希望按日期进行计数,因为您非常关注日期
以下将按日期给出计数,无论患者是谁:
select count(patient_id) as numpatients, patient_id
from patient
where STR_TO_DATE(date_enter, '%d/%m/%Y' ) between STR_TO_DATE('$repeat', '%d/%m/%Y' ) and
STR_TO_DATE('$to', '%d/%m/%Y') and
patient_type = 'opd' and
patient_id = '$idpatient1'
order by STR_TO_DATE(date_enter, '%d/%m/%Y' )
顺便说一下。你不认为所有这些调用STR\u to\u DATE()
的查询看起来很糟糕吗。除了使查询效率降低之外,它们还很难看。使用数据库数据类型在数据库中存储日期。这就是他们的目的。您是否将日期(值)存储为日期(数据类型)?
select STR_TO_DATE(date_enter, '%d/%m/%Y' ), count(patient_id) as numpatients
from patient
where STR_TO_DATE(date_enter, '%d/%m/%Y' ) between STR_TO_DATE('$repeat', '%d/%m/%Y' ) and
STR_TO_DATE('$to', '%d/%m/%Y') and
patient_type = 'opd' and
group by STR_TO_DATE(date_enter, '%d/%m/%Y' )
order by STR_TO_DATE(date_enter, '%d/%m/%Y' );