如何在mysql中重新格式化datetime?

时间:2011-04-11 15:35:14

标签: php mysql datetime

问题1:我正在使用datetime在MySQL中存储日期和时间。我使用MySQL Now()函数来插入datetime。如何使用其他格式存储日期?来自:年 - 月 - 小时:分钟:秒到:日 - 月 - 年小时:分钟:秒。

问题2:如何只检索上面存储日期的指定部分(日,月,年等)?

4 个答案:

答案 0 :(得分:4)

你不明白,mysql只在yyyy-mm-dd接受日期格式。你无法改变mysql的标准。

虽然您可以使用mysql内置函数以不同格式检索日期。

查看mysql的date and time函数,您可以以任何格式检索日期,然后为什么需要更改存储格式。

答案 1 :(得分:0)

使用datetime类型和date_format()以您喜欢的方式显示日期。将它们存储为字符串是错误的。

答案 2 :(得分:0)

您无法真正选择存储日期时间,您只能选择在检索日期时如何格式化,这就是我认为您想要的。 MySQL有关于如何存储日期时间和类似格式的内部机制。

在您选择datetime列的查询中,您可以指定格式选项,或者您可以使用PHP的DateTime类以您想要的任何格式输出给定日期。

假设您要格式化直接存储在查询中的日期mysql,您可以使用以下内容:

SELECT CONCAT(MONTH(NOW()), '.', DAY(now()), '.', YEAR(now()));

在提供的示例中,您可以将NOW()替换为在表中存储日期时间的列,应该很容易自己做,我假设您有足够的经验。

为了检索单个值,例如给定日期的分钟或秒 - 你几乎自己拥有它,语法是

SELECT MINUTE(NOW());
SELECT SECOND(NOW());

你也可以使用MICROSECOND,DAY,MONTH,YEAR - 只需通过正确的日期时间,MySQL就可以完成其余的工作。

答案 3 :(得分:0)

如前所述,改变日期时间的存储方式并不是一个好主意(因为一件事情会按日期排序),但你可以做的是更改输出日期,如下所示:

$oldDate = "2011-12-10 10:22:32
$newDate = date('d-m-Y G:i:s', strtotime($oldDate));
echo $newDate
10-12-2011 10:22:32

对于你的第二个问题,可能是:

$newDate = date('d/m - Y', strtotime($oldDate));
echo $newDate
10/12 - 2011

要更改输出,请阅读PHP Date()

这是一种方法,但也可以使用datetime()直接从SQL Query中完成。

希望这能回答你的问题...