【问题标题】:Display data from database wherein the date is within this week显示日期在本周内的数据库中的数据
【发布时间】:2015-08-26 16:05:53
【问题描述】:

我这里有一个代码,它可以在本周内的一天中获取数据库中的数据。例如:如果今天的日期是 2015-08-27,并且数据库中的 date_paid 列的值为 2015-08-26 和 2015-08-25,它将显示具有这两个日期的数据。 这是我尝试获取本周内日期的代码:

// set current date
$date = date('Y-m-d');
// parse about any English textual datetime description into a Unix timestamp 
$ts = strtotime($date);
// find the year (ISO-8601 year number) and the current week
$year = date('o', $ts);
$week = date('W', $ts);
// print week for the current date
for($i = 1; $i <= 7; $i++) {
    // timestamp from ISO week date format
    $ts = strtotime($year.'W'.$week.$i);
    //shows the date for 7days
    $week[$i] = date("Y-m-d", $ts) . "<br>";
}

if($week[1] == $date)
{
    $today = $week[1];
}

if($week[2] == $date)
{
    $today = $week[2];
}

if($week[3] == $date)
{
    $today = $week[3];
}

if($week[4] == $date)
{
    $today = $week[4];
}

if($week[5] == $date)
{
    $today = $week[5];
}

if($week[6] == $date)
{
    $today = $week[6];
}

if($week[7] == $date)
{
    $today = $week[7];
}

$transaction = mysqli_query($connection, "SELECT * FROM transaction WHERE date_paid = '$today'");
$counttrans = mysqli_num_rows($transaction);

此代码假设获取具有该周日期的数据。但它不起作用。任何人都可以解决这个问题?

【问题讨论】:

  • 当您说它不起作用时,能否请您更详细一点?您当前的代码的预期结果和实际结果是什么?
  • 它没有正确获取数据。计数的结果始终为零,即使数据库中有该日期在该周内的值。
  • 结果应该大于 0,因为在我的数据库中有日期在本周之内,就像我在示例中所说的那样。

标签: php database date if-statement dayofweek


【解决方案1】:

首先您需要获取 date_paid 的日期。使用 MySQL 函数 'WEEKDAY'

返回日期的工作日索引(0 = 星期一,1 = 星期二,... 6 = 星期日)。

这是一个例子。

select users.created_at as day_of_week, WEEKDAY(users.created_at)  
from users;
+---------------------+---------------------------+
| day_of_week         | WEEKDAY(users.created_at) |
+---------------------+---------------------------+
| 2015-08-26 05:22:29 |                         2 |
| 2015-08-04 14:14:32 |                         1 |
+---------------------+---------------------------+

我们将通过执行此查询来选择在第 1 天创建的用户

select users.created_at as day_of_week  
from users  
where WEEKDAY(users.created_at) = '1';
+---------------------+
| day_of_week         |
+---------------------+
| 2015-08-04 14:14:32 |
+---------------------+

在你的情况下,你的查询应该是这样的

"select transaction.date_paid as pay_day
 from transaction
 where WEEKDAY(transaction.date_paid ) =". $day;

【讨论】:

  • 你能用我用的变量试试吗?
  • 在数据库内部,transaction 是表,而 date_paid 是 transaction 表中的列之一。我正在使用 mySQL。
  • @JaeEun 根据您的情况调整了查询​​,请参阅答案。
  • 你的表中是否有 created_at 列?
  • 我的表中没有 created_at 列。但是顺便说一句,我现在明白它是如何工作的,对不起,我只是 mysql 的初学者。但是我还有另一个问题,如果我想获取带有今年日期的数据怎么办?你能帮我解决这个问题吗?
猜你喜欢
  • 2016-01-11
  • 2016-07-11
  • 2015-05-19
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多