【问题标题】:How to select only future days counting from today's date?如何仅选择从今天开始计算的未来天数?
【发布时间】:2016-09-07 05:13:26
【问题描述】:

我需要一个只显示未来日期的函数。

问题是这样的“选择从今天起提前预约的患者。”

我现在的选择代码是这样的:

select Patients_code
     , max(Date) 
  from Patients
     , GPS 
 group 
    by Patients_code 
having max(Date) > '2016-05-11';

GPS 是预定时间,其中 Date 是。 此外,还有一些预订仍在 2016 年,但一个月后我得到的答案只有 2017 年的日期。

有什么建议吗?

【问题讨论】:

  • 如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 CREATE 和 INSERT 语句(和/或 sqlfiddle),以便我们可以更容易复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。
  • PatientsGPS有没有关系列,比如PatientId
  • 是的。 Patients_codePatientIdPatients 是表格。还 GPS.PK 将是 GPS 预订表中的 Patients_code。预订日期也在GPS.Date。希望这是您所要求的。
  • 嗯,问题 1 我马上就知道你正在使用MAX(Date)MAX() 是一个聚合,它将使得只有该列的最大值会显示在每行的结果中。你会想把它放在WHERE 中,并像SELECT * FROM Patients WHERE Date > NOW() 一样摆脱HAVING,但我可能会离开,用@Strawberry 建议的一些示例表和数据更新你的问题,我们可以帮助你更好。

标签: php mysql date select


【解决方案1】:

如果您使用 PHP,您可能希望像这样构建您的 SQL:

    <?php
    //ADD AN END DATE TO SPECIFY A RANGE BETWEEN TODAY & THE ENDING DATE    
    $endDateRange   = "2016-09-30";

    $sql =<<<SQL
    SELECT Patients_code, max(Date) 
    FROM Patients, GPS 
    WHERE (Date >= CURDATE() && Date =< '{$endDateRange}')
    GROUP BY Patients_code 
SQL;

假设您的结束日期是 2016-09-30,这可能归结为:

    SELECT Patients_code, max(Date) 
    FROM Patients, GPS 
    WHERE (Date >= CURDATE() && Date =< '2016-09-30')
    GROUP BY Patients_code 

这是另一种风味......所有这些都在说同样的事情:

<?php
    //DECLARE A VARIABLE TO HOLD NR. OF DAYS INTO THE FUTURE:
    $daysFromNow   = "120";     //120 DAYS INTO THE FUTURE - APPROX. 4 MONTHS FROM NOW.
    $sql =<<<SQL
    SELECT Patients_code, max(Date)
    FROM Patients, GPS
    WHERE ( DATEDIFF(MAX(Date), CURRENT_DATE()) < {$daysFromNow})
    GROUP BY Patients_code
SQL; 

这也意味着(假设范围是未来 120 天):

    SELECT Patients_code, max(Date)
    FROM Patients, GPS
    WHERE ( DATEDIFF(MAX(Date), CURRENT_DATE()) < 120)
    GROUP BY Patients_code

@kamal pal 指出您可能不需要 having 子句。现在,我不会假装知道你想做什么,但我认为他可能提出了一个很好的观点……尽管这完全取决于你以及你的真正意图是什么。这部分由您决定... ;-)

【讨论】:

    【解决方案2】:

    我想通了!谢谢大家的帮助,这很有帮助!

    我必须做的:

    select GPS.PK, Date, Name, Lastname from Patients, GPS where Date>NOW() and PatientsID=GPS.PK and PatientsID=645;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多