首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >存储DateTime与存储DateTimeOffset

存储DateTime与存储DateTimeOffset
EN

Stack Overflow用户
提问于 2011-01-17 16:48:24
回答 3查看 73.5K关注 0票数 103

我通常有一个“拦截器”,它在读/写数据库之前执行DateTime转换(从UTC到本地时间,从本地时间到UTC),所以我可以在整个系统中使用DateTime.Now (派生和比较),而不用担心时区。

关于序列化和在计算机之间移动数据,没有必要费心,因为日期时间总是UTC。

我应该继续以UTC格式存储我的日期(SQL2008- datetime),还是应该使用DateTimeOffset (SQL2008- datetimeoffset)存储它?

数据库中的UTC日期(datetime类型)已经工作并知道了这么长时间,为什么要更改它?其优势是什么?

我已经看过像this one这样的文章了,但我并不是百分之百地相信。有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2012-02-16 16:18:33

有一个巨大的不同之处,那就是你不能单独使用UTC。

  • 如果您有类似

的场景

代码语言:javascript
运行
AI代码解释
复制
- **One server** and **several clients** (all **geographically in different timezones**)
- Clients create some data with datetime information
- Clients store it all on central server

  • Then:

代码语言:javascript
运行
AI代码解释
复制
- **datetimeoffset stores Local time of the client and ALSO offset** to the UTC time
- all clients know UTC time of all data and also a local time in the place where the information originated

  • But:

代码语言:javascript
运行
AI代码解释
复制
- **UTC datetime stores just UTC datetime**, so you do not have information about local time in the client location where data originated
- Other clients do not know the local time of the place, where datetime information came from
- Other clients can only calculate their local time from the database (using UTC time) not the local time of the client, where the data originated

一个简单的例子就是机票预订系统。机票需包含2次:-“起飞”时间(“始发地”城市时区)-“降落”时间(“目的地”城市时区)

票数 138
EN

Stack Overflow用户

发布于 2011-03-10 19:00:23

对于所有历史时间(即记录发生的事件),使用UTC是绝对正确的。从UTC到本地时间总是有可能的,但并不总是相反。

什么时候使用本地时间?回答这个问题:

如果政府突然决定更改夏令时,您是否希望此数据也随之更改?

如果答案是“是”,则只存储本地时间。显然,这只适用于未来的日期,而且通常只适用于以某种方式影响人们的日期。

为什么要存储时区/偏移量?

首先,如果您想记录执行操作的用户的偏移量,您可能最好这样做,即在登录时记录该用户的位置和时区。

其次,如果您希望转换为显示,则需要有一个表,其中包含该时区的所有本地时间偏移量转换,仅知道当前偏移量是不够的,因为如果显示六个月前的日期/时间,则偏移量将不同。

票数 24
EN

Stack Overflow用户

发布于 2013-06-08 17:35:00

DATETIMEOFFSET使您能够在一个字段中存储本地时间和UTC时间。

这允许以当地或UTC时间进行非常简单和有效的报告,而无需以任何方式处理要显示的数据。

这是两个最常见的要求-本地报告的本地时间和组报告的UTC时间。

本地时间存储在DATETIMEOFFSET的DATETIME部分中,与UTC的偏移量存储在偏移量部分中,因此转换很简单,并且由于它不需要数据来自哪个时区的知识,因此都可以在数据库级完成。

如果您不需要时间降至毫秒,例如,仅降至分钟或秒,则可以使用DATETIMEOFFSET(0)。DATETIMEOFFSET字段将只需要8字节的存储空间-与日期时间相同。

因此,使用DATETIMEOFFSET而不是UTC DATETIME可以为报告提供更多的灵活性、效率和简单性。

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

https://stackoverflow.com/questions/4715620

复制
相关文章
判断是否为Gravatar默认图
最近在写公共头像服务嘛,说实话,Gr的默认头是真的丑,而且好多人都没有注册Gr所以,看到评论区大片的下图
Qicloud-W
2023/03/07
6670
判断是否为Gravatar默认图
FreeRTOS事件组之事件组的创建(xEventGroupCreate())
1.使用事件组的前提: (1)与互斥量、队列集等其他内核资源不同,想要使用事件组(xEventGroup)重点不在宏定义上是否配置为1,重点在组织程序以及程序编译的时候是否包括event_groups.c源代码以及event_groups.h头文件。 (2)另外需要将宏configSUPPORT_DYNAMIC_ALLOCATION设置为1,否则不能应用事件组创建函数(xEventGroupCreate()); 2.函数说明(xEventGroupCreate()): 函
心跳包
2020/08/31
1.9K0
PyCharm在创建py文件时自动添加默认头部注释
File ----->> Setting ----->> Editor ----->> File and Code Templates ----->> Python Script
马哥Python
2019/06/28
9920
winform listview默认第一项光标选中
if (this.lsvSortingHeadList.Items.Count > 0) { this.lsvSortingHeadList.Focus(); this.lsvSortingHeadList.Items[0].Selected = true; //this.lsvSortingHeadList.HideSelection = false;
跟着阿笨一起玩NET
2018/09/19
9240
#PY小贴士# 函数的默认参数不会每次都新建?
这里的原因在于,函数的参数默认值,是在一开始定义(也就是 def)的时候所决定的,并不是到执行时才创建。我换一个例子,就看得更明白了:
Crossin先生
2020/01/20
4440
#PY小贴士# 函数的默认参数不会每次都新建?
不会写 JavaScript 的人是否还有价值?
最近我有幸参加在墨尔本召开的 2017 Web Directions Code 大会。我和 Mark Dalgleish 还有 Glen Maddern (他的演讲非常精彩)被分到了一个演讲小组里。我们做了一系列关于 CSS 的演讲,在小组讨论中,我们讨论了一个问题:“只会写 CSS 和 HTML、不会写 JavaScript 的人在行业中还有一席之地吗”。
疯狂的技术宅
2019/03/27
7510
Xcode 创建项目默认说明修改
最近需要修改Xcode创建项目默认文案修改,就是每次创建最上面默认生成的注释说明。想起来之前看原Raywenderlich(现在是Kodeco)网站下载的代码时,每个已存在的文件里都有一长串自定义的说明,而且新建文件的时候也是带有同样的自定义的说明,有过疑惑,但是没有仔细研究,今天研究下怎么实现的:
莫空9081
2023/04/06
6700
pycharm不会自动补全括号_pycharm自动提示
首先检查是否关闭了代码提示,如下图,将红框中“Power Save Mode”前的勾去掉
全栈程序员站长
2022/09/25
2K0
pycharm不会自动补全括号_pycharm自动提示
解决ListView嵌套ListView遇到的问题
Listview嵌套会造成的问题主要是子listview的高度错误导致内容不能正常显示完,解决这个问题,我个人第一个想法就是重新计算子listview的高度,代码如下: private void setListViewHeightBasedOnChildren(ListView listView) { if(listView == null) return; ListAdapter listAdapter = listView.getAdapter(); if (listAda
xiangzhihong
2018/01/29
1.7K0
pycharm创建环境_pycharm设置默认开头
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175358.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
8230
pycharm创建环境_pycharm设置默认开头
Maven不会自动下载jar包
不会自动下载jar包 idea昨天还在正常使用,结果今天发现pom文件中的依赖不会自动下载了,最后百度找到了解决方案: setting ——> maven ——> 去掉work offline 的勾 , 问题解决!
kirin
2020/08/24
4K0
Maven不会自动下载jar包
Sqlite创建表以及默认当前时间
1、创建数据库 CREATE TABLE Joyous_sqlite ( id INTEGER NOT NULL, create_time TIMESTAMP NOT NULL DEFAULT current_timestamp, poster VARCHAR(50) NOT NULL, CONSTRAINT Joyous_sqlite_pk PRIMARY KEY (id) ); 插入语句 insert into Joyous_sqlite (id,poster) values (1, ‘Joy
苦咖啡
2018/05/08
3.3K0
android ListView 嵌套 ListView
看上去效果还是不错,不过现在有个刷新问题一直没能解决,刷新的时候里面的adapter进行刷新的时候总是会让里面的listview消失掉,应该是父listview先刷新完后,子listview还未刷新完成,导致测量的高度不对,就会消失,像当前组已关闭这种,现在这个问题还没有想到办法解决的,试过比较多的方法,添加接口让子listview 刷新完成后再去更新父listview,但还是没有作用,也用过ExpandableListView,但是效果达不到这种,所以没办法还是得用这种办法,有大神知道怎么解决刷新父listview时子listview消失的方法,指导下我,比较奇怪的时候刚开始初始化的时候子listview是默认不显示的,当点击父listview去张开子listview,父listview应该会再次刷新,但子listview展开是可以的,然后下一次更新数据源的时候子listview又会自动关闭,我猜应该是在刷新子listview的时候,父listview先更新完成,子listview的高度测量就没有对!
全栈程序员站长
2022/09/13
1.4K0
android ListView 嵌套 ListView
logstash在Elasticsearch中创建的默认索引模板问题
在ELK架构中,使用logstash收集服务器中的日志并写入到Elasticsearch中,有时候需要对日志中的字段mapping进行特殊的设置,此时可以通过自定义模板template解决,但是因为logstash默认会向Elasticsearch提交一个名为logstash的模板,所以在定义logstash配置文件时有一些关键点需要注意。本文基于logstash-5.6.4和elastcisearch-5.6.4对需要注意的关键点进行列举。
bellen
2018/10/30
7.5K0
logstash在Elasticsearch中创建的默认索引模板问题
FindMarkers做差异分析默认就不会返回全部基因
所以如果我们使用FindMarkers函数对两个分组单细胞进行差异分析,它本身默认参数就不可能返回全部的基因,大家可以使用help函数看这个FindMarkers函数的帮助文档,尤其是注意下面的3个参数:
生信技能树
2021/10/12
3.7K0
[- Flutter 基础篇 -] ListView的使用
1.ListView 的基本使用 ListView 是一个盛放多个孩子的容器。我们从下面的例子开始介入: 1.1:三个构造 使用ListView构造方法 和Flex,Wrap类似,将子元素一个
张风捷特烈
2020/04/30
1K0
[- Flutter 基础篇 -] ListView的使用
查看CentOS 默认安装的 SSH client、SSH server以及是否可用?
1、点击[命令行窗口] 2、按<Enter>键 3、点击[命令行窗口] 4、按<Enter>键
裴来凡
2022/05/28
1.6K0
查看CentOS 默认安装的 SSH client、SSH server以及是否可用?
[- Flutter 基础篇 -] ListView的使用
1.ListView 的基本使用 ListView 是一个盛放多个孩子的容器。我们从下面的例子开始介入: 1.1:三个构造 使用ListView构造方法 和Flex,Wrap类似,将子元素一个一
张风捷特烈
2020/10/16
8520
[- Flutter 基础篇 -] ListView的使用
点击加载更多

相似问题

ListView不会自动滚动

21

Listview不会自动更新自身

16

ObservableCollection不会自动更新ListView

11

自动组创建

21

ListView是否自动支持lazyload?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档