微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 在MySQL中,我如何比较今天的日期与数据库表中的日期?

我正在为孕妇建立一个网络应用程序(用于我的大学网络开发课程)
在我的数据库中,我存储了每个用户的概念日期.

在我的应用程序中,我采用概念日期并将其与今天进行比较,并向用户提供有关怀孕期间该点的一些信息.

我的数据库中还有一张表,其中包含怀孕的每个“阶段”的记录(即第1阶段= 1-2个月,阶段2 = 2-3个月等)
那么我将如何构建我的MySQL查询?这就是我一直在尝试的…

SELECT s.id as stageid
  , p.id as patientid
  , s.name
  , s.nutritioninfo
  , s.commonsymptoms
  , p.conceptiondate 
FROM stage s, patient p 
WHERE p.id=? AND TO_DAYS(p.conceptiondate)=To_DAYS(Now());,

上面的最后一行(TO_Days()= TO_DAYS()部分)是我正在努力的部分.
 为“舞台”表格中的每个阶段存储一行开始日期和结束日期是否明智?
但那么如何才能起作用,因为我的所有用户都有独立的概念日期?

我将在PHP中使用此查询,然后在我的ExtJS内置接口中使用该PHP查询.

解决方法:

您的查询

SELECT s.id as stageid
  , p.id as patientid
  , s.name
  , s.nutritioninfo
  , s.commonsymptoms
  , p.conceptiondate 
FROM stage s, patient p 
WHERE p.id=? and TO_DAYS(p.conceptiondate)=To_DAYS(Now());,

有几个问题:

>不要使用隐式连接语法(使用where连接),这是令人困惑和折旧的;总是使用显式连接!见下文.
>您的查询中没有任何地方存在连接标准,其中来自阶段s的字段连接到来自患者p的字段,例如, (加入p.x = s.y)
>我建议不要在舞台数据库中使用单日.使用范围而不是将field stage.stageday替换为2个字段stage.startday和stage.endday

这是我的建议:

SELECT s.id as stageid
 , p.id as patientid
 , s.name
 , s.nutritioninfo
 , s.commonsymptoms
 , p.conceptiondate 
FROM patient p
INNER JOIN stage s 
  ON (DATEDIFF(CURDATE(), p.conceptiondate) BETWEEN s.startday AND s.endday)
WHERE p.id=?

它使用显式连接cf ANSI 92语法,该语法清楚地显示了两个表的连接方式.
我在开始日和结束日添加了两个新字段,现在你只需要在怀孕期间每个阶段定义一行.你甚至可以有重叠的阶段.
0 =受孕日,196应该是出生日.不要忘记在出生晚期包括足够的额外天数:-).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐