首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写时间戳,或如何最好地处理SQL日期?

问如何编写时间戳,或如何最好地处理SQL日期?
EN

Stack Overflow用户
提问于 2011-01-11 17:44:23
回答 4查看 4.2K关注 0票数 0

在我的PHP应用程序中,当我用PHP的MySQL命令对其进行格式化时,我会从date()数据库获取日期。我想整理一下,把它全部移到视图上,而不是检索。但我遇到了一些问题。

当从数据库获取日期时,在运行strtotime()之后,我会将其传递给应用程序的其他部分,这样date()函数就有了它们可以处理的东西。这是个好主意吗还是我错过了更好更明显的东西?我处理的日期几乎都是DATE类型的,而不是DATETIME类型的。

因此,我得到了日期,可以使用date()在网页上显示它。但有时,我会从数据库中获得一些东西,只用于插入数据库中的其他地方,并且必须搜索后端,以找到需要date()的地方,这就违背了将其与视图分离的目的。我的检索函数可以很好地返回strtotime($date_from_db),然后在另一个表中创建新条目.所有新条目都必须通过验证和准备功能。问题就在这里。我验证和准备日期,看看他们是否strtotime()的东西,而不是0000-00-00。但是我不能在时间戳上运行strtotime();在测试中,如果给我12/31/1969,我就会运行。所以我的问题是:

  1. 在时间戳上运行strtotime()是可能的吗?
  2. 如果不是,是否有一种简单的方法可以知道变量是否是时间戳?所以我可以简单地在上面运行date(),而不是处理strtotime()?除了看看它是否会出现在1969年12月31日,因为我不知道我是否可以相信失败是一致的。除非这是件有效的事?
  3. 我这样做完全不对吗?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-11 17:58:08

作为一种普遍的方法,我很想:

  1. 使用MySQL的datetime类型存储日期/时间值,因为这将允许您在MySQL中有意义地查询数据,而不必使用>= "timestampvalueX“等。
  2. 以时间戳格式保存PHP脚本中使用的所有“实时”日期信息。

因此,您可能希望将所有与日期/时间相关的信息以该格式存储为目标。您可以将其转换为PHP可以在查询本身中使用的格式(使用时间戳),也可以通过爆炸YYYY:MM:SS格式,并使用PHP的mktime创建“标准”时间戳。(尽管您可能希望将支票日期用于验证目的。)

回到你的具体问题:

  1. 如果传递时间戳,闪存时间将失败。
  2. 作为临时措施,您可以编写一个函数,检查提供的值是否为10位整数,并假定它是本机时间戳(如果是的话)。(if(is_int($value) && strlen($value) == 10)...)
  3. 听起来有点混乱,所以作为一个合理的短期目标,您可能应该尝试并标准化在MySQL和PHP中的使用。
票数 1
EN

Stack Overflow用户

发布于 2011-01-11 17:52:11

当您查询时间戳时,让mySQL处理它。

日期格式

查询将检索经过格式化的时间戳,因为您需要它,从而避免了处理字符串的任何操作。

票数 1
EN

Stack Overflow用户

发布于 2011-01-11 17:52:50

但是我不能在时间戳上运行strtotime();在测试中,如果给我12/31/1969,我就会运行。

12/31/1969是UNIX时代( 1-1-1970 )的开始,时区偏移。

在时间戳上运行strtotime()将返回0,当您通过date()运行它时,它将以1-1-1970 UTC的形式结束。检查0的strtotime结果就可以了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4660737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档