MySQL 日期格式

Posted

技术标签:

【中文标题】MySQL 日期格式【英文标题】:MySQL Date Format 【发布时间】:2011-10-20 03:18:05 【问题描述】:

我的 html 表单上有一个字段,要求用户输入日期为 dd/mm/yyyy。然后我运行一个 php 脚本,将数据保存到一个 mysql 数据库,或者如果我可以解决我在日期格式方面遇到的问题。

我知道默认情况下,mySQL 数据库将日期保存为 yyyy-mm-dd,但有人可以告诉我如何继续将用户输入日期格式保持为 dd/mm/yyyy,但是当它遇到数据库它已正确转换为 mySQL 日期格式。

【问题讨论】:

【参考方案1】:

使用 PHP 运行您的格式化。在将其插入数据库之前,为 MySQL 重新格式化数据:

$mydate = new DateTime($userdate);
$mydate = $mydate->format("Y-m-d");

如果您需要从数据库中获取它,只需以类似的方式将日期格式改回即可。

【讨论】:

所有,非常感谢您抽出宝贵时间回复并提供您的建议,非常感谢。我必须承认我在 PHP 和 mySQL 方面是非常新的,并且我已经了解了我需要对日期数据做些什么,这并不是什么大问题。由于这一点以及我目前缺乏知识,我决定将数据保存为 VARCHAR。我知道这可能不是保存信息的最明智的方法,但目前它会满足我的需要,直到我获得更多经验。再次感谢您的时间和麻烦。问候克里斯【参考方案2】:

我也遇到过这个问题。我的解决方案是将用户输入的字符串转换为 Unix 时间戳,然后使用 PHPs date() 函数将其转换为 MySQL 兼容格式。

要将字符串转换为 Unix 时间戳,您可以使用 strtotime 或者如果您更熟悉面向对象编程,则可以使用 DateTime::createFromFormat 工厂函数。根据我的经验:strtotime 可以胜任

现在您需要将返回的时间戳转换回 MySQL 格式。这很简单:

$sqldate = date("Y-m-d", $timestamp);

【讨论】:

strtotime 仅支持非常有限的日期范围(“它会完成这项工作”是不够的),而DateTime 具有程序多样性。【参考方案3】:

The format of mysql is indeed 'YYYY-MM-DD'。

我建议如下(未经测试):

$userInput = '24/12/2004';
date('c',  date_parse($userInput));

明智的做法是使用准备好的语句并将日期直接发送到准备好的语句。唉,Php-MySQL prepared statements don't allow for a date type。

【讨论】:

【参考方案4】:

试试这个:

php > list($d,$m,$y) = explode("/","28/04/2011");
php > echo date("Y-m-d",mktime(0,0,0,$m,$d,$y));
2011-04-28

【讨论】:

【参考方案5】:

您可以通过创建一个简单的函数来做到这一点——例如:

function convertDate2Sql($date = null) 
    if (!empty($date)) 
        $date = explode("/", $date);
        return implode("-", array_reverse($date));
    

显然,您必须确保如果您使用不同的日期格式,即美国的日期格式为前一个月,那么您必须在使用 explode() 函数后手动重新排列 $date 数组中的值,但如果它的格式和你上面所说的一样,那么使用 array_reverse() 就可以了。

【讨论】:

【参考方案6】:

我找到了一个 jquery,它允许我设置日期的格式,使我能够设置存储在我的数据库中的数据的标准。

【讨论】:

以上是关于MySQL 日期格式的主要内容,如果未能解决你的问题,请参考以下文章

mysql中怎么把日期的格式转换为YYYYMMDD的数字形式,谢谢

如何将日期字符串转换为 mysql 日期格式以使用 mysql 查询计算日期差异

在jQuery datepicker中更改日期格式与MySQL格式相同[重复]

MySQL 日期格式

mysql日期操作

mysql 获取当前日期及格式化[转]