使用php microtime从mysql表中提取数据工作不正常

使用php microtime从mysql表中提取数据工作不正常,php,mysqli,microtime,Php,Mysqli,Microtime,我正在mysql中的一个表中显示一长串销售详细信息。 问题是我只能获取一个月的数据。一旦月份发生变化,它就不会显示任何内容。 例如:从2015年5月1日至2015年5月30日显示的数据,但从2015年6月1日起不显示任何内容 我使用以下代码将每次销售的时间戳值添加到数据库中: $time = round(microtime(true)*1000); 其余代码如下所示: <?php include 'connect.php'; $timestamp = ""; $return = arra

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

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

$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>";
?>

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

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

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

time()
将以秒为单位以整数返回时间。
microtime()
将以微秒为单位以字符串或浮点形式提供时间,方法是将true用作第一个参数=>
microtime(true)

正如我所看到的,您将
microtime()
乘以1000。这将为您提供与
time()
相同的功能

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

VS

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')";
$sql = "INSERT INTO example ('date_name', 'date', 'some_random_val') VALUES ('DATE: Auto CURDATE()', CURDATE(), 'value2')";
使用MYSQL CURDATE日期的示例(对于当前日期)


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

Ok。我一定会试一试。但是数据库中已经设置的值呢?它们是使用上述代码设置的吗?这有什么关系吗?您应该做一个测试,但我认为它可以,因为这两个都是从Unix时间戳计算的。只是microtime()以微秒为单位返回,time()以秒为单位返回。而且,由于你是用时间乘以1000来手动转换微时间,这些值应该保持非常接近。除了
round
差异之外,php部分在以微秒获取以前在db中存在的数据时是否会造成任何问题?我不这么认为,因为您是从db中获取值的。我的意思是,在db中存在的数据以微秒为单位,但您显示的php将以您指定的方式插入数据。那么,如果二者的格式不同,sql如何可能产生更大或更小的差异呢?也许这会有所帮助:第一部分是一个包含所有不同函数的工作表。