Php 日期间时间pdo
如何在mysql中获取每周数据? 这个代码不适合我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
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