首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP能安全地使用unix时间戳查询mysql数据库吗?

问PHP能安全地使用unix时间戳查询mysql数据库吗?
EN

Stack Overflow用户
提问于 2012-09-21 11:15:21
回答 2查看 388关注 0票数 2

关于处理约会有很多建议。我只是想澄清一下。让我们说:

  • 用户正在向数据库中插入记录。
  • 为此记录生成插入日期的unix时间戳。

现在,用户希望查询数据库中的日期间隔:

  • 用户在本地时区中提供两个日期。
  • 使用这些值将时区转换为UTC并获得时间戳。
  • 根据两个整数从转换中查询数据库中的记录(例如。其中日期>=第一,日期<=第二)
  • 将检索到的时间戳再次转换为本地时区以供显示

我知道PHP可以做到这一点,但在这种情况下,不需要关心mysql的时区设置--只有php。系统将是64位,因此存储日期的空间不足并不是问题。但是..。

这会不会引发其他严重的问题,比如DST的改变或其他什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-21 11:19:07

Unix时间戳与时区无关.

这也是您可以更改此步骤的原因:

使用这些值将时区转换为UTC并获得时间戳。

这方面:

将值转换为Unix时间戳

虽然在数据库中存储时间戳(例如。( MySQL)是非常简单的。如果需要,可以确保PHP具有Unix时间戳:

  • 通过使用FROM_UNIXTIME()的函数保存值(将Unix时间戳作为参数,您将根据的设置接收日期时间),
  • 通过使用MySQL的函数(给出字段的名称或值作为参数)检索值,因此您将根据UNIX_TIMESTAMP()的设置在数据库中存储的日期时间来获得Unix时间戳(整数)。

只需记住使用TIMESTAMP列类型来存储时间戳。这样,时间将以与时区无关的方式存储,只根据MySQL的设置显示。

票数 2
EN

Stack Overflow用户

发布于 2012-09-21 11:30:42

Tadeck是正确的,Unix时间戳与时区无关。

但是,当在整个应用程序中使用时间戳时,您应该将时间戳存储在数据库中,并将其作为普通的in使用。在应用程序级别(在PHP中)转换本地时区。这允许您只关注PHP中的时区,而不是2个系统中的时区。它还简化了在应用程序级别为单个用户设置时区。

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

https://stackoverflow.com/questions/12529411

复制
相关文章

相似问题

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