将当前日期插入MYSQL表,然后回显

时间:2012-10-17 22:42:28

标签: php mysql

似乎有太多复杂的方法可以做到这一点,所以我正在寻找一个干净,简洁的答案来解决这个问题。

我写博客,点击提交,标题,内容和时间戳记在我的博客表格中。之后,博客显示在blogindex.php页面上,日期格式为MM-DD-YYYY。

所以这是我的3步问题:

  1. 将日期插入的最佳列类型是什么? (例如:INT,VARCHAR等)

  2. 使用哪种INSERT INTO命令最好? (例如:NOW(),CURDATE()等)

  3. 当我查询表并在数组中检索这些数据时,回应它的最佳方法是什么?

  4. 我是PHP / MySQL的新手,所以请原谅我,如果我不懂语言,并且对于本主题的1000个不同意见没有具体解决我的问题,或者仅涵盖3个问题中的一个,我太沮丧了...

4 个答案:

答案 0 :(得分:1)

以下是我对您的三个问题的看法:

  1. 使用正确的数据类型:Date or DateTime。我会在存储时间时选择DateTime类型(如果你想要某种订单,当你添加帖子时可能会非常方便)。

  2. 这完全取决于您是否只想要日期(使用CURDATE())或日期+时间(使用NOW())。

  3. 您可以获取数据并根据需要对其进行格式化。不要在查询中对其进行格式化,只需使用正确的PHP函数(例如使用DateTime)。你如何获取数据,并不重要;您可以使用PDOMySQLi或...

答案 1 :(得分:0)

始终以UTC格式存储和处理日期和时间,并在表示层中执行时区调整 - 这大大简化了长期内容。

MySQL提供了许多不同的类型来处理日期和时间,但唯一需要担心的是DATETIMEDATE类型不存储时间信息,这会浪费时间区域转换,因为信息丢失,TIMESTAMP类型执行自动UTC转换(如果系统时区信息发生变化,可能会导致程序混乱)并且范围较小(1970-2038)。

CURDATE()函数仅返回当前日期并排除时间信息,但这会返回本地时区中可能更改的信息。避免这样做。 NOW()函数是一种改进,但同样会返回当前时区的数据。

因为您希望保留UTC中的所有内容,所以您实际上想要使用UTC_TIMESTAMP function

要返回值,您需要按顺序执行SQL命令,如下所示:

SET @now = UTC_TIMESTAMP()
INSERT INTO myTable ( utcDateTimeCreatedOrSomething ) VALUES ( @now )
SELECT @now

答案 2 :(得分:0)

日期可能是最好的类型,尽管日期时间也可以作为记录更准确。

没有“最佳插入”,但您真正想要的是什么,以及您希望日期的准确程度。对于博客,我会说让它成为日期时间并使用NOW()。所以访客可以看到这篇文章的确切时间。

当然你可以很容易地找到巨大的运行sql并使用google的php从sql中获取一个select查询,所以我会把这个简单的工作交给你自己。

对于回显日期,您可以使用php日期格式,例如:

$today = date("m-d-y");                         // 03-10-01

答案 3 :(得分:0)

我认为Styxxy非常正确,但这里有一个PHP日期格式化部分的链接... How to format datetime most easily in PHP? (支持链接:http://php.net/manual/en/datetime.format.php) 基本上就是这个 回音日期(“d / m / Y”,strtotime('2009-12-09 13:32:15')) ...虽然,我认为 strtotime 是不必要的,因为它应该已经具有日期时间的类型。

就MySQL而言,是的,将其作为日期时间列,使用NOW()作为SQL关键字,并根据您希望如何从数据库中获取它...

SELECT CAST(col_name AS DATE)....或.... SELECT CAST(col_name AS DATETIME)&lt; - 由于col类型,暗示了最后一个。< / p> 祝你好运! :)