【问题标题】:DateTime::createFromFormat日期时间::createFromFormat
【发布时间】:2012-11-07 06:07:50
【问题描述】:

我需要在我的数据库中输入日期和时间(以字符串形式输入),但没有变化(日期保持为 0000-00-00,时间保持为 00:00:00)。我知道我应该使用 DateTime::createFromFormat() 但我不确定如何去做。请耐心等待并向我解释我应该如何去做以及每个步骤中发生了什么,如果我想稍后从数据库中返回日期,我将如何去做?我正在使用 $date$starttime$endtime

【问题讨论】:

  • 好的等等...你说的“没有变化”是什么意思...你能不能给我们看一些你的代码以便我们可以帮助你......
  • 我很困惑......你想存储一个字符串,上面写着“在这个日期,从时间 A 到时间 B”?请向我们展示一些代码,或者更好地解释您想要做什么。

标签: php datetime


【解决方案1】:

插入时,使用STR_TO_DATE 将您的字符串日期转换为DateDATETIME,格式为:

   INSERT INTO TABLE1(date, startTime, endtime) 
   VALUES (STR_TO_DATE('$date','%d/%m/%Y'),
          STR_TO_DATE('$starttime','%d/%m/%Y a%h:%i:%s'),
          STR_TO_DATE('$endtime','%d/%m/%Y a%h:%i:%s'));

在检索过程中类似地使用DATE_FORMAT 转换为所需格式的字符串:

  SELECT DATE_FORMAT(date, '%d/%m/%Y') AS formatter_date,
         DATE_FORMAT(starttime,'%d/%m/%Y a%h:%i:%s') AS formatted_startTime
         DATE_FORMAT(endtime,'%d/%m/%Y a%h:%i:%s') AS formatted_endTime
  FROM TABLE1;

如果您需要进一步解释,请告诉我。

【讨论】:

  • 感谢您的解释。完美运行
  • @JoannaIrungu:有什么问题吗?
  • 日期部分工作正常,但数据库中的时间仍为 00:00:00。另外,如何设置一列以始终显示特定行条目的创建时间,即时间?
  • @JoannaIrungu: 1. 你的列是日期时间类型的,你真的传递了领带片段吗? 2.您在寻找一些审计专栏吗?如果是,则添加触发器以在插入事件发生时使用当前时间更新特定列。我在创建触发器方面需要帮助,请告诉我。如果您要问其他问题,请澄清。
  • @JoannaIrungu:像这样的东西:CREATE TRIGGER audit_time AFTER INSERT ON TABLE1 FOR EACH ROW BEGIN UPDATE TABLE1 SET CREATE_DATE = NOW() WHERE ID = NEW.ID; END;。更多详情请参考dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
相关资源
最近更新 更多