【问题标题】:MySQL Select range date between two columnsMySQL选择两列之间的范围日期
【发布时间】:2013-11-23 20:50:23
【问题描述】:

我有下表(日期),其中列采用定义的日期格式。

id   Column1                Column2       
 1   [2013-07-12 12:00:00]  [2013-07-14 12:00:00]   

我想提取这样的范围(column1 和column2 之间的日期):

2013-07-12 12:00:00

2013-07-13 12:00:00

2013-07-14 12:00:00

如何实现?

【问题讨论】:

  • 您希望 SQL 查询的结果是什么? $result 行没有任何意义。您期望该 1 条记录有 3 列还是一个字符串?
  • 我期待 3 个 culumns,即 07/12 和 07/14 之间的 3 个日期。我希望我很清楚。
  • 动态创建列几乎是不可能的。但是现在看起来您更改了问题,这意味着您希望每个值都有行(虽然比列更容易,但仍然很复杂。)您可能希望专注于以 PHP 为中心的解决方案。

标签: php mysql date select


【解决方案1】:

试试这个:

SELECT * FROM DateTable
WHERE DATEDIFF('2013-07-14',dateFROM)>=0
AND DATEDIFF('2013-07-14', dateTO) <= 0

见我的SQLFiddle Demo

【讨论】:

  • 感谢您的帮助,这将有所帮助
  • 没问题@user2959620。快乐的编码和上帝保佑。
【解决方案2】:

这是一个 PHP 脚本,它将获取从您的表返回的两个日期,将每一天分开,然后将这一天放入一个数组中。然后可以从数组内部轻松访问日期。

<?php
    $date_1 = date("Y-m-d g:i:s", strtotime('2013-06-27 12:00:00'));
    $date_2 = date("Y-m-d g:i:s", strtotime('2013-07-03 12:00:00'));
    $results = array($date_1);
    $i = $date_1;
    while ($i <= $date_2) {
        $i = date("Y-m-d g:i:s", strtotime("+1 day", strtotime($i)));
        array_push($results, $i);
        echo $i;
    }
    print_r($results);  
?>

$date_1$date_2 将是从表返回的值。确保将最早的日期分配给 $date_1,否则脚本将永远运行。

【讨论】:

  • 这正是我想要达到的范围。非常感谢。
【解决方案3】:

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

也许在两列之间的 datediff 小于或等于您的预期范围的情况下选择 *?

【讨论】:

  • 这个日期差异看起来或多或少是我正在寻找的......给我时间给你一个反馈。谢谢..
猜你喜欢
  • 1970-01-01
  • 2012-04-12
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 2011-04-27
  • 1970-01-01
相关资源
最近更新 更多