首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Server 2008 R2和SQLServerCompact4中存储日期/时间数据的最佳方法

在Server 2008 R2和SQLServerCompact4中存储日期/时间数据的最佳方法
EN

Stack Overflow用户
提问于 2013-06-27 04:29:46
回答 3查看 12.4K关注 0票数 3

我们正在C# 4中开发一个应用程序,它使用Server 2008 R2作为后端。SQLServerCompact4也用于很少几种罕见情况下断开连接的客户端。我们想知道在这些数据库中存储日期/时间数据的最佳方法是什么,以便:

  1. 包含不同时差(来自不同时区)的数据可以很好地共存。这意味着要进行排序和比较。
  2. Server 2008 R2和SQLServerCompact4中的数据可以无缝地来回传输;这是一个不应影响所选设计的次要要求。

我们的主要关注点是为每个记录的事件保留本地时间,但不丧失比较和排序从不同时区生成的事件从而具有不同时间偏移的能力。

我们考虑了datetimeoffset数据类型,因为它存储时间偏移量,也因为它很好地映射到.NET的DateTimeOffset。但是,SQLServerCompact4不支持它。另一种方法是从数据库中删除偏移量信息,并使用简单的datetime数据类型,这样数据库中的每一段数据都可以标准化,使用Compact的问题也更少。然而,这带来了一个问题,即在用户看到数据之前,需要在检索时以某种方式重建偏移信息。

因此,我的问题是,对于如何在Server中存储日期/时间值,考虑到我们需要处理不同的时区,并使2008年R2和Compact4之间的互操作性尽可能容易,是否有最佳实践或指导方针?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-27 08:41:17

听起来相关的要点如下:

  • 您输入的数据非常适合DateTimeOffset
  • 您只关心特定时间的偏移量,因此不需要实时时区。(偏移量不是时区。)
  • 你确实关心原始的偏移量--你不能只是把所有的东西正常化到UTC,而完全忽略这个偏移量。
  • 您想查询本地时间。

在这种情况下,DateTimeOffset基本上是最合适的类型。您应该确保团队中的每个人都清楚这意味着什么--偏移量是数据最初接收时的偏移量。如果您想在不同的时区中及时显示该瞬间,则实际上需要返回UTC,并找出该显示时区中的偏移量。很容易对这类事情感到困惑:)

如果您需要完全保真度地维护SqlServerCE中的数据,您可能需要一个DateTime字段,然后需要一个单独的偏移字段(例如分钟,或者作为TimeSpan (如果SqlServerCE支持的话))。

票数 5
EN

Stack Overflow用户

发布于 2013-06-27 09:02:04

在服务器上使用DateTimeOffset可能是正确的。您可能还想在DateTime vs DateTimeOffset上阅读我的答案。

在您使用SQLCE的客户端上,使用UTC值存储一个DateTime。当您将数据发送到服务器时,可以使用客户端的本地时区来确定UTC值对应的DateTimeOffset

如果用户可能正在更改他们的时区,那么您可能还需要将时区的id存储在客户端数据库中。但是你可以在转换过程中使用这个。除非您在服务器或其他客户端上编辑这些值,否则不需要将其发送到服务器。

不要尝试将时间存储在客户端的本地时间。你会遇到异能。例如,当夏令时倒转时,您不希望相同的本地时间有两个不同的UTC时间。

票数 1
EN

Stack Overflow用户

发布于 2013-06-27 04:59:33

为什么不使用datetime并始终将值存储为UTC值,然后在需要时将其格式化为最终用户(显示)时区。

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

https://stackoverflow.com/questions/17343214

复制
相关文章
Windows Server 2008 R2 Server Core
在微软Windows Server 2008中开始提供一个全新的Server Core模式,它是一个最小限度的系统安装选项,只包括安全、TCP/IP、文件系统、RPC等服务器核心子系统。在Server Core我们可以安装所需的服务器角色和特征,并且仅有非常少的GUI,像我们常见的IE、OE等应用在Server Core中是没有的,在Server Core中我们可以安装的服务器角色也只有DNS、DHCP、文件服务、活动目录、ADLDS(轻型目录服务)、打印、媒体、Web这几种,而其他角色是不能安装的。Win
张善友
2018/01/30
2.3K0
SQL Server 2008 R2 主数据服务
主数据服务(Master Data Services,MDS)既是一个概念又是一个产品,主数据服务的概念是对核心业务数据有一个集中的数据入口看守人,数据项如客户账单地址,雇员/客户姓名,以及产品名称应该集中管理,以便让所有消费应用系统都具有相同的信息。微软提供了一个示例,在customer表中记录了一个顾客地址,但在mailing表中记录了一个不同的地址。主数据服务应用程序可以保证所有表只有一个正确的地址,而一个MDS可以是一个本地应用程序,SQL Server 2008 R2包括一个应用程序和一个接口管理
张善友
2018/01/30
7970
Window Server 2008 R2系统备份
1、安装Backup 2、打开Backup工具 3、一次性备份 下一步
aehyok
2018/09/07
1.4K0
Window Server 2008 R2系统备份
ASP.NET可以在Windows Server 2008 R2 Server Core上运行
微软在上周举行的Windows硬件工程大会(Windows Hardware Engineering Conference,WinHEC)展示了Windows Server 2008 R2版,服务器操作系统的更新锁定虚拟化、管理、弹性,及网络等四个范畴.Server Core上新增对ASP.NET的支持.不过Windows Server 2008 R2只有64位版本了,如今64位的处理器不论在台式计算机或是服务器上都已成为业界标准,因此微软聚焦在64位处理器上;Windows Server 2008 R2将
张善友
2018/01/22
1.4K0
在windows server 2008 r2上安装nokia pc 套件
我下载了最新版的nokia pc套件,不过发现无法在windows server 2008 r2上安装:
williamwong
2018/07/24
6320
在windows server 2008 r2上安装nokia pc 套件
SQL Server 2008 R2主数据服务安装
SQL Server 2008 R2的主数据服务(Master Data Services,简称MDS)已经放出,目前是CTP版本,微软提供了下载地址:
深蓝studyzy
2022/06/16
7860
SQL Server 2008 R2主数据服务安装
SQL server 2008 r2 安装教程[通俗易懂]
1、下载sql server 2008 r2的安装包(如果需要安装包可以私我,密钥自动输入) 2、打开安装包,点击setup.exe
全栈程序员站长
2022/09/10
2K0
SQL server 2008 r2 安装教程[通俗易懂]
在 MySQL 中处理日期和时间(三)
在本系列关于日期和时间的前两部分中,我们介绍了 MySQL 的五种时态数据类型。现在是时候将注意力转移到 MySQL 的许多面向日期或时间的函数了。
MySQL技术
2022/06/08
3.8K0
在 MySQL 中处理日期和时间(三)
在 MySQL 中处理日期和时间(四)
在这个关于日期和时间的系列中,我们探索了 MySQL 的五种时态数据类型,以及它的许多面向日期或时间的函数中的一些。在本文中,我们将介绍在 MySQL 中创建日期和时间的几种方法。
MySQL技术
2022/06/08
3.9K0
在 MySQL 中处理日期和时间(四)
在 MySQL 中处理日期和时间(二)
欢迎回到这个关于在 MySQL 中处理日期和时间的系列。在前面章节中,我们探讨 MySQL 的时态数据类型。第一部分介绍了 DATE、TIME 和 DATETIME 数据类型,而本部分将介绍余下的 TIMESTAMP 和 YEAR 类型。
MySQL技术
2022/06/08
3.5K0
在 MySQL 中处理日期和时间(二)
SQL server 2008 r2 安装图文详解
文末有官网下载地址、百度网盘下载地址和产品序列号以及密钥,中间需要用到密钥和序列号的可以到文末找
全栈程序员站长
2022/07/23
2.3K0
SQL server 2008 r2 安装图文详解
Windows Server 2008 R2远程设置选项灰色解决方法
最近公司环境有几天Windows Server 2008R2的服务器因为没有激活导致过期后都不能远程,连接显示器后发现远程设置的地方为灰色了效果如图:
习惯说一说
2019/08/01
2.5K0
在 MySQL 中处理日期和时间(一)
绝大多数数据库存储了大量的“时态”数据。时态数据只是表示时间状态的简单数据。一个组织可能出于各种原因收集时态数据,例如分析天气模式和其他环境变量、监控交通状况、研究人口趋势等。企业还经常需要存储有关何时下订单、何时补货、何时雇用员工,以及有关其日常业务的大量其他信息。
MySQL技术
2022/06/08
3.6K0
在 MySQL 中处理日期和时间(一)
在 MySQL 中处理日期和时间(五)
在 MySQL 中的日期和时间系列的最后一部分中,我们将通过编写 SELECT 查询来将迄今为止学到的所有知识付诸实践,以获得对数据的与日期相关的细节。
MySQL技术
2022/06/08
4.2K0
在 MySQL 中处理日期和时间(五)
[Windwos]Windows Server 2008 R2 英文改中文
RT有时候小伙伴们使用的是国外的服务器,老外安装的Windows 都是英文的,这个时候你需要汉化(坑爹的老外)
用户2353021
2020/05/11
2.2K0
SQL server 2008 R2 突然无法启动
在SQL配置管理器中,查看MSSOLSERVER和SQLEXPRESS中都有个VIA的属性,将VIA设置为禁用,然后重启服务,就可以了,服务能正常启动。
红桃K
2019/12/26
1.5K0
配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2
1.先修改 sql server 2008R2的端口号吧,1433经常成为别人入侵的端口,在sql server 配置管理器 --》sql server 网络配置--》MSSQLSERVER的协议,把里面的 TCP/IP --》属性  ip地址里面的端口号都改成2433,重启 sql server 服务(MSSQLSERVER) 2.运行firewall.cpl--打开防火墙--高级设置--入站规则--新建规则--选择程序--》位置C:\Program Files\Microsoft SQL Server\
张善友
2018/01/22
1.5K0
打造Window Server 2008 R2的工作站
Thinkpad X200 7458 CTO上安装Windows Server 2008 R2,windows Server 2008 R2安装过程非常简单,只要下一步就可以了,主要是驱动程序的安装和
张善友
2018/01/22
1.1K0
打造Window Server 2008 R2的工作站
SQL Server 2008中的Pivot和UnPivot
今天给新成员讲解PIVOT 和 UNPIVOT示例,顺便整理了一下其用法。这是自SQL Server 2005起提供的新功能。
跟着阿笨一起玩NET
2018/09/19
1.7K0
Java中的时间和日期(二):java时间存储的基本原理
在java中,java.util.Date对象用于表示时间。这个对象既能表示日期,也能表示时间。原因在于这个对象内部实际上是一个long字符来存储的毫秒数。我们都知道时间通过System.currentTimeMillis()方法获取当前的系统时间戳,就能转换为我们所需要的时间:
冬天里的懒猫
2020/08/11
1.9K0

相似问题

Server:存储时间的最佳方法(没有日期)

57

Server 2008中时间序列数据的最佳处理方法

33

在Server 2008 R2中选择当前月份日期的最佳方法是什么

12

如何在Server 2008中只存储日期和时间?

24

使用Server 2008 R2从日期时间获取日期名称

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文