2

我正在从 mysql 的表中显示一长串销售详细信息。问题是我只能获取一个月的数据。一旦月份更改,它不会显示任何内容。例如:从 2015 年 1 月 5 日到 2015 年 5 月 30 日显示的数据,但从 2015 年 1 月 6 日开始,它不显示任何内容。

我使用以下代码在数据库中添加每个销售的时间戳值:

$time = round(microtime(true)*1000);

其余代码在这里:

<?php
include 'connect.php';
$timestamp = "";
$return = array();
$response = "";
$sql = "SELECT * FROM receipts ORDER BY timestamp DESC LIMIT 1";
$result1 = mysqli_query($db, $sql);
if($details = mysqli_fetch_array($result1)){
    $timestamp = $details['timestamp'];
}

$sql = "SELECT * FROM sales WHERE timestamp>'$timestamp' ORDER BY date ASC";
$result = mysqli_query($db, $sql);

echo "<table class=table1>";
while($fetch_options=mysqli_fetch_array($result)){
    $memo=$fetch_options['memo'];
    $product=$fetch_options['pid'];
    $qty=$fetch_options['qty'];
    $amount=$fetch_options['amt'];

    echo "<tr>";
    echo "<td align=center>$memo</td>
             <td align=center>$product</td>
             <td align=center>$qty</td>
             <td align=center>$amount</td>";
    echo "</tr>";
}
echo "</table>";
?>

我觉得这个问题与时间戳值有关。提前致谢。

4

2 回答 2

0

我会发表评论,但它仍然没有足够的代表来做到这一点。

有些东西告诉我你应该使用time()而不是microtime()

time()将以秒为单位的时间作为 INT 返回。microtime()通过使用 true 作为第一个参数,将以微秒为单位为您提供 STRING 或 FLOAT 时间 =>microtime(true)

正如我所看到的,您乘以microtime()1000。这将给您与 相同的结果time()

尝试使用time()而不是round(microtime()*1000).

http://php.net/manual/en/function.microtime.php VS http://php.net/manual/en/function.time.php

于 2015-06-05T17:34:14.497 回答
0

Mysql 将日期以下列格式存储在数据库中:

YYYY-MM-DD HH:MM:SS.SSS

因此,如果您想在数据库中包含日期,请使用此格式。执行此操作时,分拣系统将起作用。

使用 PHP 日期的示例

$date = date("Y-m-d H:i:s");
$sql = "INSERT INTO example ('date', 'some_random_val') VALUES ($date, 'value2')";

使用 MYSQL CURDATE 日期的示例(对于当前日期)

$sql = "INSERT INTO example ('date_name', 'date', 'some_random_val') VALUES ('DATE: Auto CURDATE()', CURDATE(), 'value2')";

我更喜欢使用 php 日期的解决方案。

于 2015-06-05T17:42:02.217 回答