Php 具有多个日期变量的查询

Php 具有多个日期变量的查询,php,mysql,Php,Mysql,我对PHP和MySQL很陌生。我遇到了一个问题,我会尽力解释我的问题 TODAY = 2013-01-13 18:37:00 PRODUCT = P000001 表:组装 ----------------------------------------------------------------- ∣ PRODUCT ∣ COMPONENT ∣ BEINFORCE ∣ WILLEXPIRE ∣ ---------------------

我对PHP和MySQL很陌生。我遇到了一个问题,我会尽力解释我的问题

 TODAY = 2013-01-13 18:37:00
 PRODUCT = P000001
表:组装

  -----------------------------------------------------------------
  ∣ PRODUCT ∣ COMPONENT ∣      BEINFORCE      ∣     WILLEXPIRE      ∣
  -----------------------------------------------------------------
  ∣ P000001 ∣ C000001   ∣ 2013-01-01 18:37:00 ∣ 0000-00-00 00:00:00 ∣
  -----------------------------------------------------------------
  ∣ P000001 ∣ C000002   ∣ 2013-02-01 18:37:00 ∣ 0000-00-00 00:00:00 ∣
  -----------------------------------------------------------------
  ∣ P000001 ∣ C000003   ∣ 2013-01-01 18:37:00 ∣ 2013-01-10 18:37:00 ∣
  -----------------------------------------------------------------
输出必须是:

  -----------------------------------------------------------------
  ∣ PRODUCT ∣ COMPONENT ∣      BEINFORCE      ∣     WILLEXPIRE      ∣
  -----------------------------------------------------------------
  ∣ P000001 ∣ C000001   ∣ 2013-01-01 18:37:00 ∣ 0000-00-00 00:00:00 ∣
  -----------------------------------------------------------------

来自表集合的查询必须检查PRODUCT、BEINFORCE和WILLEXPIRE以及output表。

如果我理解正确,包括问题下方的注释,则您需要符合以下条件的
集合的那些行

  • 今天的
    BEINFORCE
    小于或等于
  • 有一个
    WILLEXPIRE
    ,它是零,我用它来表示未来的日期
  • 匹配您请求的
    产品
  • 您可以使用以下查询实现这一点,假设用户变量代表您的参数。当然,您也可以使用准备好的查询占位符

    SELECT *
    FROM ASSEMBLY
    WHERE BEINFORCE <= @TODAY
      AND WILLEXPIRE = '0000-00-00 00:00:00'
      AND PRODUCT = @PRODUCT
    
    选择*
    从组装
    
    你的意思是你想得到第一栏??不清楚你想做什么。你在寻找与BEINFORCE的精确时间戳匹配吗?同一天的时间戳?指定时间24小时内的时间戳?或者BEINFORCE和WILLEXPIRE之间的时间戳?这里的业务逻辑是什么?基本上是属于“产品”组件的“组件”列表。若要列出“BEINFORCE”已过期且“WILLEXPIRE”已过期的产品,我需要进行两次检查。WILLEXPIRE需要检查“0000-00-00 00 00:00:00”是否过期,以及是否插入了日期,如果在将来显示,则显示,如果在过去不显示。“0000-00-00:00:00”表示未插入WILLEXIRE!我认为问题在于我想做-WILLEXPIRE='0000-00-00 00:00:00',并且WILLEXPIRE>TODAY@user1682101:
    ,而不是
    ,因为您希望获得与两个条件中的任何一个匹配的行。用括号括起来。从
    ASSEMBLY
    中选择*WHERE
    BEINFORCE
    =“@TODAY”或
    WILLEXPIRE
    =“0000-00-00 00:00:00”)和
    PRODUCT
    =“@PRODUCT”尝试过,但仍然不起作用?括号是解决方案。我刚把“@TODAY”修好测试。所以,谢谢你,看起来一切都很好!