【问题标题】:PHP MySQL date betweenPHP MySQL 日期之间
【发布时间】:2012-09-05 08:49:42
【问题描述】:

该系统用于电话合同比较。最初我们可以按长度过滤结果,以月为单位。但是,我们选择将其作为 合同结束日期timestamp 存储在数据库中。

原来的PHP如下:

$min = min($_POST["length"])-6;
$max = max($_POST["length"]);
$query[] = "length BETWEEN $min AND $max";

总而言之,这就是我们目前所拥有的:

  1. 在数据库中存储了合同的结束日期(作为时间戳)

  2. post 值包含从现在起应该持续多少个月(例如,7-12 个月的值为 7)

我们如何更改 PHP 计算以从数据库中获取值之间的值?

非常感谢,尼克。

【问题讨论】:

    标签: php mysql datetime


    【解决方案1】:
    <?php
        $diff = 7;     // This may be set to $_POST['length']
        $max = date("Y-m-d");
        $min = date("Y-m-d", strtotime("$diff months ago"));
        $query[] = "DATE(`timestamp_field`) BETWEEN CAST($min AS DATE) AND CAST($max AS DATE)";
    ?>
    

    【讨论】:

    • 是否不必强制转换 $min 和 $max 日期以确保正确的数据类型? DATE(timestamp_field) BETWEEN CAST($min AS DATE) AND CAST($max AS DATE)
    • @Daniel 我不确定CAST 功能-它有什么作用?
    • @Daniel 啊,是的。我通常将datetime 类型的列分开。所以,这是预构建的代码。 :)
    • @NickPrice; CAST 函数确保该值属于某种数据类型。如果您比较 $min $max 而不进行强制转换,则这些值可能会被视为字符串,而不是日期。见链接:dev.mysql.com/doc/refman/5.0/en/…
    猜你喜欢
    • 2013-05-22
    • 2011-11-19
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    相关资源
    最近更新 更多