【问题标题】:how to output database entries by date in DD/MM/YY format?如何以 DD/MM/YY 格式按日期输出数据库条目?
【发布时间】:2012-11-30 03:45:21
【问题描述】:

我正在使用以下代码输出数据库条目:

<div id="main_area">
<div  id="container">
<div id="php_container" role="main">
<?php
include('connect_it.php');
$sqlget= "SELECT * FROM dbtablename";
$sqldata= mysqli_query ($dbcon,$sqlget) or die('this is an error');
while ($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)) {
echo $row[ 'li' ] ;
}
?>
</div>
</div>
</div>

在页面加载时,我希望数据库条目按其日期(从最近到最近)排序,该日期存储在名为“已添加”的 mysql 字段中,格式为 DD/MM/YY。

我不确定它是否可以完成,但作为另一种选择,日期在&lt;span id="date"&gt;date: 27/11/11&lt;/span&gt; 定义的范围内,所以也许这个范围可以用来对数据进行排序?

所以我的问题是,我怎样才能使初始输出按日期从最近到最近?

我试过了:

$sqlget= "SELECT * FROM dbtablename ORDER BY added ASC";

但我得到了意想不到的结果。

谢谢。

【问题讨论】:

  • 您的added 列是什么数据类型?应该是date。此外,您需要按降序排序
  • 感谢您的回复,该列是 varchar(8) , latin1_swedish_ci - 我可以在 phpMyadmin 中将列的“类型”更改为“日期”吗?我刚刚做了一个 sql 转储,以防需要备份。谢谢。

标签: php mysql sql-order-by


【解决方案1】:

如果您添加的列是 DATE、DATETIME 或 TIMESTAMP 类型,您可以像这样使用 DATE_FORMAT,

$sqlget= "SELECT *, DATE_FORMAT(added,'%d/%m/%y') as addedFormated FROM dbtablename ORDER BY added ASC";

见,https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

否则,如果它是一个字符串尝试(虽然它确实应该是一个 DATE 类型),

$sqlget= "SELECT *, STR_TO_DATE(added,'%d/%m/%y') as addedFormated FROM dbtablename ORDER BY STR_TO_DATE(added,'%d/%m/%y') ASC";

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

【讨论】:

  • 非常感谢,第二个代码sn-p完美运行,我感谢所有用户cmets关于数据类型,但现在这个方法可以工作,谢谢大家的知识和建议。问候。
  • 没问题,如果你想改变你的列类型,这里有一个带有简单脚本的 SO 线程。将列名称调整为您拥有的名称。您可能还需要使用上面的 STR_TO_DATE 来格式化日期字符串,以便数据库可以读取它。
【解决方案2】:

先做一些小事(还有更多),&lt;span id="date"&gt;...&lt;/span&gt; 无效,因为 id 属性应该是唯一的,请改用&lt;span class="date"&gt;...&lt;/span&gt;。浏览器会渲染它,在大多数情况下甚至会正确渲染它,但这并不是“id”属性的正确使用。

您需要选择查询中的所有列吗?如果没有,请只选择您需要的。

你想要的查询是:

SELECT * FROM dbtablename ORDER BY added DESC

但这将选择所有行和所有列。现在是棘手的部分。您说您的数据以“dd/mm/yyy”格式存储,因此此查询将不起作用,因为每年每月大约有 30 天。您需要使用datetime 列类型,它将以yyyy-mm-dd 00:00:00 格式存储您的日期数据。如您所见,这将解决您的所有问题。

或者,正如其他人所说,使用STR_TO_DATE(added,'%d/%m/%y') 提取数据。

然后,在您提取的数据上,在 PHP 中使用(其中$var 是您的日期值):

echo date('d/m/y',strtotime($var));

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多