似乎有太多复杂的方法可以做到这一点,所以我正在寻找一个干净,简洁的答案来解决这个问题。
我写博客,点击提交,标题,内容和时间戳记在我的博客表格中。之后,博客显示在blogindex.php页面上,日期格式为MM-DD-YYYY。
所以这是我的3步问题:
将日期插入的最佳列类型是什么? (例如:INT,VARCHAR等)
使用哪种INSERT INTO命令最好? (例如:NOW(),CURDATE()等)
当我查询表并在数组中检索这些数据时,回应它的最佳方法是什么?
我是PHP / MySQL的新手,所以请原谅我,如果我不懂语言,并且对于本主题的1000个不同意见没有具体解决我的问题,或者仅涵盖3个问题中的一个,我太沮丧了...
答案 0 :(得分:1)
以下是我对您的三个问题的看法:
答案 1 :(得分:0)
始终以UTC格式存储和处理日期和时间,并在表示层中执行时区调整 - 这大大简化了长期内容。
MySQL提供了许多不同的类型来处理日期和时间,但唯一需要担心的是DATETIME
(DATE
类型不存储时间信息,这会浪费时间区域转换,因为信息丢失,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>
祝你好运! :)