【问题标题】:MySQL - how to show all date from given range dateMySQL - 如何显示给定范围日期的所有日期
【发布时间】:2014-07-10 08:32:21
【问题描述】:

我有这样的记录:

编号 |姓名 |日期 1 |阿吉 | 2014-06-01 2 |阿肯 | 2014-06-02 3 |露薇 | 2014-06-04 4 |丹妮 | 2014-06-05

我想显示从 2014-06-01 到 2014-06-06 的所有日期,即使它们没有关联的记录:

编号 |姓名 |日期 1 |阿吉 | 2014-06-01 2 |阿肯 | 2014-06-02 空 |空 | 2014-06-03 3 |露薇 | 2014-06-04 4 |丹妮 | 2014-06-05 空 |空 | 2014-06-06

【问题讨论】:

  • 您使用的是哪个 DBMS?后格雷斯?甲骨文?
  • @user986959,即使该日期的记录为空,我也需要显示记录

标签: mysql sql date range


【解决方案1】:

我不确定我是否理解您的要求。 但是

SELECT * FROM table WHERE date BETWEEN  '2014-06-01' AND '2014-06-06'

<?php
$start = new DateTime('2014-06-01');
$interval = new DateInterval('P1D');
$end = new DateTime('2014-06-06');

$period = new DatePeriod($start, $interval, $end);

foreach ($period as $date)
{
    if (isset($results['date'][$date]))
    {
        // Results display
    }
    else
    {
        // NULL display
    }
}

$results 是查询的结果

【讨论】:

    【解决方案2】:

    也许你可以使用这种方式。

    SQL 服务器

    Select IsNull(id, Null), IsNull(name,Null),date 
       where date Between  2014-06-01 and 2014-06-06.
    

    如果 ID 已经设置为 int,那么就这样做

    Select IsNull(id, 0), IsNull(name,Null),date 
       where date Between  2014-06-01 and 2014-06-06.
    

    我的 SQL

    select id, name,date from tr_kehadiran 
        where date >= "2014-06-30" AND date <= "2014-07-06" AND id is Null AND name is Null
    

    请告诉我结果。

    【讨论】:

    • 查询:选择 IsNull(id, 0), IsNull(name,0),date from tr_kehadiran where date >= "2014-06-30" AND date
    • 它显示没有 2014-06-03 和 2014-06-06 的记录
    • 立即查看。这是我的错。现在我更改了 IfNull 语法,请查看我的答案部分。
    • 立即尝试。我已经更改了查询。希望对你有帮助。
    【解决方案3】:

    以下是要遵循的步骤-

    如果是 SQL Server

    1. 使用 CTE,根据您的要求填充所需的日期范围

    2. 将您的表格与日期列上的 CTE 左联接,并从 CTE 填充结果集中缺少的日期

    如果是 MySQL -

    1. 根据需求创建临时表填充日期范围

    2. 在日期列上左连接临时表并从 CTE 填充结果集中缺少的日期

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      相关资源
      最近更新 更多