正确的MYSQL语法用于时间戳比较和具有某些排除项的不同结果


Proper MYSQL syntax for timestamp comparison and distinct results with certain exclusions

很抱歉问你,但我以前从未做过如此复杂的MYSQL查询,而且我真的不知道该用谷歌搜索什么才能得到答案。

我有一个精心制作的数据库,里面有一张孕妇预约表,包括她们来的日期和当时怀孕的周数。我正在尝试选择每一个现在应该是30周的,但在怀孕25周后还没有单独的条目。我使用电话号码来唯一识别每个人。

由于我真的不知道如何制定这个查询,所以这是我想到的最好的查询。

SELECT * FROM patientlist WHERE 
    UNIX_TIMESTAMP() - (UNIX_TIMESTAMP(`date`) - `weekspreg`*604800) > 29*604800 
AND 
    UNIX_TIMESTAMP() - (UNIX_TIMESTAMP(`date`)- `weekspreg`*604800) <= 30*604800 
AND
 /* a subquery that keeps out results where the phone number would show up elsewhere in the table for a woman with more than 25 weeks of pregnancy. */

必须有一个更好的解决方案,而不是通过电话号码分别查询日期范围内的每个结果,看看周数是否超过25。

提前感谢您的帮助或指导。

您的整个WHERE不正确。查询只能有ONEwhere子句。您使用andor而不是and where:加入多个条件

WHERE foo AND bar  // correct
WHERE foo AND WHERE bar // syntax error

查看MySQL的日期和时间函数。例如,我不完全确定最后一个WHERE子句要做什么,但我相信第一部分可以重写为:

SELECT * 
FROM patientlist
WHERE `date` - interval `weekspreg` week
   between now() - interval 29 week 
   and now() - interval 30 week