我正在用mysql做一个php项目。在数据库中,我有一个存储用户数据的表,这些数据中有医疗证明。当我记录医疗证明时,我会插入发布日期(我知道自该日期起一年内有效)。 现在,我想从数据库中提取所有医疗证明过期的用户。为此,我使用了这个查询,但它返回了错误的结果。。我做错了什么?我错过了什么?我使用DATE_ADD在查询中为医疗证明添加一年:
SELECT id, nome, cognome,data_scadenza_certificato_medico FROM tbl_tesserati WHERE CURRENT_DATE > (data_scadenza_certificato_medico = DATE_ADD(data_scadenza_certificato_medico, INTERVAL 1 YEAR)) AND rif_tbl_utenti = 1
id nome cognome data_scadenza_certificato_medico 23 my_name my_surname 2023-08-20
查询的问题在于WHERE条件的构造方式。条件是将CURRENT_DATE与赋值操作的结果(=)进行比较,而不是直接检查日期逻辑。以下是如何更正查询:
更正查询
SELECT id, nome, cognome, data_scadenza_certificato_medico FROM tbl_tesserati WHERE CURRENT_DATE > DATE_ADD(data_scadenza_certificato_medico, INTERVAL 1 YEAR) AND rif_tbl_utenti = 1;