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

时间:2014-10-02 14:39:01

标签: php mysql database rows calculated-columns

很抱歉,但我之前从未做过如此复杂的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个。

提前感谢您的任何帮助或指示。

2 个答案:

答案 0 :(得分:3)

您的整个WHERE不正确。查询只能包含 ONE where子句。您使用andor加入了多个条件,而不是and where

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

答案 1 :(得分:0)

查看MySQL Date and Time Functions。例如,我并不完全确定最后一个WHERE子句试图做什么,但我相信第一部分可以重写为:

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