如果我的日期如mm / dd / yyyy。如何让mysql以该格式实际存储日期。这是可能的还是必须以yyyy / mm / dd的形式存储并稍后转换?
我想要做的是以mm / dd / yyyy格式插入日期,但数据库不允许这样做。它想要yyyy / mm / dd
答案 0 :(得分:8)
你这样做的原因是什么?我看不出任何合理用途。
你不能改变MySQL存储日期的方式,不。但是你可以在读/写它们时格式化它们。您可以在SQL查询中执行此操作:
例如,您可以使用STR_TO_DATE
函数格式化插入日期:
INSERT INTO mytable (mydate) VALUES (STR_TO_DATE('12/31/2009', '%m/%d/%Y'))
反之亦然:
SELECT DATE_FORMAT(mydate, '%m/%d/%Y') FROM mytable /* returns 12/31/2009 */
但正如FactalizeR指出的那样,在查询中执行它并不是一个好习惯,它应该像这样移动到脚本中(考虑到你使用的是PHP)。
$date = '12/31/2009';
$date = date('Y-m-d', strtotime($date));
mysql_query("INSERT INTO mytable (mydate) VALUES ({$date})");
反之亦然
$date = mysql_result(mysql_query("SELECT mydate FROM mytable"), 0, 0);
$date = date('m/d/Y', strtotime($date)); //returns 12/31/2009
答案 1 :(得分:1)
MySQL中有一个内置的DATE类型。它允许存储日期。稍后在您的编程语言中,您将提取此日期并转换为您喜欢的任何格式。此外,转换可以通过DATE_FORMAT(日期,格式)函数直接在MySQL中完成。
答案 2 :(得分:1)
我认为你混淆了你存储的东西 - 日期本身 - 以及随后引用的日期。
为什么要以特定格式存储?你想以那种格式插入吗?在这种情况下,您可能可以使用它,具体取决于您的安装的本地化,但否则转换 - 插入将是这样做的方式(当然,取决于您如何插入)。
您是否从字符串创建SQL命令?
答案 3 :(得分:0)
MySQL DATE字段必须以YYYY-MM-DD(包括破折号)格式存储日期。如果您尝试以任何其他方式存储它,您将遇到日期比较和排序问题。
以后转换是一项微不足道的任务。你有没有令人信服的理由避免这样做?您还使用了哪些其他技术与MySQL数据库进行通信? (即PHP,C#等......)