如何自动从当前日期的数据库中获取数据

时间:2014-03-14 15:16:26

标签: php mysql sql database date

我想从当前日期的数据库中获取数据。当我打开页面然后我看到获取今天当前日期的数据。如果我选择另一个日期然后我从数据库获取另一个日期数据这里是我的概念http://joomusic.info/joosilver.php的实例,如果你访问这里,那么你理解我的概念

<link rel="stylesheet" type="text/css" href="tcal.css" />
<script type="text/javascript" src="tcal.js"></script>
<script src="jquery.js"></script>
 <script>
   $(document).ready(function()
 {
   //ajaxTime.php is called every second to get time from server
   var refreshId = setInterval(function()
 {
   $('#timeval').load('ajaxTime.php?randval='+ Math.random());
 }, 1000);

   //stop the clock when this button is clicked
   $("#stop").click(function()
 {
   clearInterval(refreshId);
 });
 });
</script>
<form action="ko.php" method="get">
From : <input type="text" name="d1" class="tcal" value="<?php echo date("m/d/Y"); ?>" /> 
<input type="submit" value="SHOW">
</form>

<table id="resultTable" data-responsive="table" style="text-align: center; width: 400px;" border="1" cellspacing="0" cellpadding="4">
<thead>
<tr>
            <tr  bgcolor="#F1EDC2">
    <td><font color='#2F4F4F'><h2> Draw Time</h2></font></td>
    <td><font color='#2F4F4F'><h2> Wining Number</h2></font></td>
</tr>
</thead>
<tbody>
  <?php
    include('connect.php');
    if (isset($_GET["d1"])) { $d1  = $_GET["d1"]; } else { $d1=('Y-m-d H:i:s'); }; 
    $result = $db->prepare("SELECT * FROM birthday WHERE date = :a");
    $result->bindParam(':a', $d1);
    $result->execute();
    for($i=0; $row = $result->fetch(); $i++){
  ?>
<tr class="record">
            <tr  bgcolor="#EEF3E2">
    <td><font size=5><font color='#008B00'><?php echo $row['dt']; ?></font></td>
    <td><font size=5><font color='#008B00'><?php echo $row['wn']; ?></font></td>
</tr>
<?php
}
?>
</tbody>
</table>

如果我将此行$result = $db->prepare("SELECT * FROM birthday WHERE date = :a");更改为$result = $db->prepare("SELECT * FROM birthday WHERE date <= :a");,那么我会获取所有日期数据...但我只想在此处自动显示当前日期数据是我想要的实时示例http://joomusic.info/joosilver.php我想要的像这样100%

2 个答案:

答案 0 :(得分:0)

要考虑的三点: 1.如果您只想要当前的日期结果,那么只需使用“=”。 2.我们需要在生日表中查看date日期列的数据类型。 如果数据类型是datetime,则将hh:mm:ss添加到日期,或者如果数据类型只是日期,则只需使用日期。 3.如果date列是int并将它们存储在timestamp中,则将date转换为microtime并使用它。

SELECT * FROM yourTable WHERE CURDATE()&gt; = STR_TO_DATE(date,'%m-%d-%Y')ORDER BY STR_TO_DATE(date,'%m - %d-%Y')DESC LIMIT 1

答案 1 :(得分:0)

您没有提及date列的数据类型。

但是在WHERE语句中使用日期,时间戳和日期时间项目有点棘手。如果要查找特定日期的所有行,最好的方法是:

WHERE whatever
  AND `date` >= DATE(:a)
  AND `date` <  DATE(:a) + INTERVAL 1 DAY

这会从我提到的那天的午夜开始获取所有date值,直到但不包括我提到的那天后的午夜。

您也可以这样做(或等效)

WHERE whatever
  AND DATE(`date`) = DATE(:a)  /* slow! */

但它会阻止使用索引来满足您的查询,使其变慢。

这是我写的一篇文章,提供了一些背景知识。 http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/