当前位置: 首页 > 面试题库 >

在数据库中存储时区的正确方法?

史旺
2023-03-14
问题内容

让我解释一下:我并不是在问将特定日期时间的时区存储在数据库中的正确方法。我说的是时区本身。例如:

我有一个名为“用户”的MySQL表。现在,在此表上,我希望有一列包含用户居住地的时区(由用户提供,将从列表中选择)。我正在使用PHP,其中包含类似以下时区字符串的列表:

美国时区列表

现在,显而易见的解决方案(至少对我而言)是在“用户”表中创建VARCHAR列,然后将PHP使用的时区字符串存储在该列中。

现在我考虑一下,这将假定我将始终使用PHP与该数据库表进行交互,尽管现在是正确的,但将来可能不是这样。并且(如果我错了,请纠正我)PHP的时区字符串可能不适用于其他编程语言,也许其他语言有自己的“常量”来处理时区。

那么,您将如何处理在DB列中保存用户的时区首选项?任何想法肯定表示赞赏。

注意:关于PHP时区的有用之处在于,即使DST有效,它们也会自动考虑到它,这真是太棒了。因此,您可以看到我对使用它们的兴趣,而不仅仅是存储数字偏移量。


问题答案:

并且(如果我错了,请纠正我)PHP的时区字符串可能不适用于其他编程语言

好的,我会。:)

PHP实现了IANA / Olson / TZDB / ZoneInfo数据库(同一事物的许多名称)。这是最接近行业标准的东西,并且几乎在每种编程语言和平台中都可以实现。

唯一不本地支持它的操作系统是Microsoft
Windows,因为Microsoft维护自己的时区数据库。因此,对于以Windows为中心的平台(如.Net),如果要支持该时区样式,必须使用某些库。

在时区标签Wiki或Wikipedia上了解更多信息。

是的-您只需将时区ID字符串存储为varchar。那是最好的事情。



 类似资料:
  • 我正在通过使用Laravel作为后端开发来创建一个电子商务移动应用程序。 方案:我有一个Product表,其中存储了有关产品的一些信息。每当用户购买一个产品,他将得到一个购买历史记录(它将显示产品信息)将被存储到数据库中。所以当卖家更新他们的产品信息时,用户购买历史记录的产品信息不会受到影响。 问题:如果我只是简单地创建一个用户的购买历史记录表来存储每个用户的记录,我认为这将在数据库中需要大量的空

  • 所以我试图将一些数据存储到我的实时数据库中。我目前有两个独立的视图控制器,一个用于用户注册,另一个用于用户选择其配置文件图像并能够更改该图像。在注册页面上,我将“用户名”保存到firebase,如下所示: 对于个人资料图像,我有这样保存的数据 我希望这两个数据都保存在“用户”下-

  • 问题内容: 在MySQL数据库中存储IP地址的最佳字段类型和长度是什么? IPv6呢? 问题答案: 将IP存储为,然后使用和功能存储/检索IP地址。 样例代码:

  • 我有两列,一列名为“日期”,另一列名为“时间”。Date是日期数据类型,“time”是字符数据类型。我正在使用以下查询来选择一个新的组合时间戳列 SQL状态:0A000 如何选择包含EST5EDT时区信息的时间戳列?

  • 问题内容: 我是Quartz的新手,现在我需要在Spring Web应用程序中安排一些工作。 我知道有关Spring + Quartz的集成(我正在使用Spring v 3.1.1),但我想知道这是否是正确的方法。 特别是, 我需要将计划的任务保存 在数据库中,以便在重新启动应用程序时可以将其重新初始化。 Spring调度包装器提供了一些实用程序来执行此操作吗?您能建议我采取一些“众所周知的”方法

  • 问题内容: 前言:我正在尝试在MVC体系结构和关系数据库中使用存储库模式。 我最近开始学习PHP中的TDD,并且意识到我的数据库与我的其余应用程序之间的联系太紧密了。我已经阅读了有关存储库并使用IoC容器将其“注入”到控制器中的信息。很酷的东西。但是现在有一些关于存储库设计的实际问题。考虑以下示例。 问题1:字段过多 所有这些查找方法均使用全选()方法。但是,在我的应用程序中,我总是试图限制获得的