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 查询计算日期差异