Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 日期间时间pdo_Php_Mysql_Pdo - Fatal编程技术网

Php 日期间时间pdo

Php 日期间时间pdo,php,mysql,pdo,Php,Mysql,Pdo,如何在mysql中获取每周数据? 这个代码不适合我 public function getWeeklyWinners() { $today = time(); $a_week_ago = strtotime("-1 week"); $sql = "SELECT * FROM money_transfer WHERE send_date BETWEEN ? AND ?"; $query = $this

如何在mysql中获取每周数据? 这个代码不适合我

 public function getWeeklyWinners() {
            $today = time();
            $a_week_ago = strtotime("-1 week");
            $sql = "SELECT * FROM money_transfer WHERE send_date BETWEEN ? AND ?";
            $query = $this->db->prepare($sql);
            $query->execute(array($today, $a_week_ago));
            if ($query->rowCount())
                return $query->fetchAll();
            return false;
        }

使用
date\u sub
INTERVAL

SELECT * FROM money_transfer WHERE send_date 
BETWEEN date_sub(now(),INTERVAL 1 WEEK) and now();

使用
date\u sub
INTERVAL

SELECT * FROM money_transfer WHERE send_date 
BETWEEN date_sub(now(),INTERVAL 1 WEEK) and now();

我认为您的问题是您正在生成Unix时间,而不是日期,请更改生成起始日期和结束日期的代码,以便它们以
2015-12-01 00:00:00
2015-11-24 00:00:00
的格式生成日期,并且您的代码应该可以工作

如果您是手工编写查询的,那么您应该像这样编写查询代码

SELECT * FROM money_transfer WHERE send_date BETWEEN '2015-11-24 00:00:00' AND '2015-11-24 00:00:00'
但您的代码将生成

SELECT * FROM money_transfer WHERE send_date BETWEEN '1448962584' AND '1448357784'
因此,像这样对日期生成进行一个小的更改应该会起作用

public function getWeeklyWinners() {
    $today = date('Y-m-d 00:00:00');
    $a_week_ago = date('Y-m-d 00:00:00',strtotime("-1 week"));

    $sql = "SELECT * FROM money_transfer WHERE send_date BETWEEN ? AND ?";
    $query = $this->db->prepare($sql);
    $query->execute(array($a_week_ago, $today));
    if ($query->rowCount())
        return $query->fetchAll();
    return false;
}

我认为您的问题是您正在生成Unix时间,而不是日期,请更改生成起始日期和结束日期的代码,以便它们以
2015-12-01 00:00:00
2015-11-24 00:00:00
的格式生成日期,并且您的代码应该可以工作

如果您是手工编写查询的,那么您应该像这样编写查询代码

SELECT * FROM money_transfer WHERE send_date BETWEEN '2015-11-24 00:00:00' AND '2015-11-24 00:00:00'
但您的代码将生成

SELECT * FROM money_transfer WHERE send_date BETWEEN '1448962584' AND '1448357784'
因此,像这样对日期生成进行一个小的更改应该会起作用

public function getWeeklyWinners() {
    $today = date('Y-m-d 00:00:00');
    $a_week_ago = date('Y-m-d 00:00:00',strtotime("-1 week"));

    $sql = "SELECT * FROM money_transfer WHERE send_date BETWEEN ? AND ?";
    $query = $this->db->prepare($sql);
    $query->execute(array($a_week_ago, $today));
    if ($query->rowCount())
        return $query->fetchAll();
    return false;
}

如果它对你不起作用(不管这意味着什么),那是因为今天的美元和一周前的美元没有正确的价值。你还没有分享那条信息。如果它对你不起作用(不管这意味着什么),那是因为$today和$a_week_之前没有正确的值。您尚未共享该信息。如果我的答案对您有帮助,请接受我的答案:)@leventulunif如果我的答案对您有帮助,请接受我的答案:)@leventulun