当前位置:  开发笔记 > 编程语言 > 正文

如何在SQL中处理时间存储

如何解决《如何在SQL中处理时间存储》经验,为你挑选了2个好方法。

我有一个我正在编写的Web应用程序(C#,MSSQL),我需要存储记录存储在系统中的时间戳.通常,我会使用SQL和DATETIME函数执行此操作.但是,服务器位于与我们公司所在的时区不同的时区......我们可能会在完全不同的时区更改为另一台服务器.托管公司不会更改服务器时间以匹配我们的本地时区.(不是我责备他们,但这是我尝试过的一件事.)

所以,我的问题是,存储记录更新的日期/时间的最佳方法是什么,以及在当地时区将该日期/时间呈现给用户的最佳方式是什么?

我想要最简单的方法来做到这一点,所以只要解决方案易于实现,C#和SQL的组合就可以了.(我的正常风格是在存储过程中做更多的工作而在C#中做更少的工作,如果这很重要的话.)

你能告诉我一些示例代码吗?谢谢!



1> Steven A. Lo..:

始终以协调的世界时(UTC aka GMT)存储DATETIME数据

这可以避免所有时区问题

这避免了日光节省时间问题

这允许简单的日期数学始终有效

这允许不同时区的交易保持同步

这允许您将数据移动到不同时区的不同服务器,而不是将所有内容都搞砸

等"通用"时间,有意义吗?

C#DateTime提供DateTime.UtcNow和ToLocalTime(),SQL提供GETUTCDATE().这是一个将UTC转换为本地时间的SQL函数 -

-- convert UTC to local time
create FUNCTION [dbo].[udfUtcToLocalTime]
(
    @gmt datetime
)
RETURNS datetime
AS
BEGIN
    DECLARE @dt datetime
    SELECT 
        @dt = dateadd(millisecond,datediff(millisecond,getutcdate(), getdate()),@gmt)
    RETURN @dt
END

例:

SELECT dbo.udfUtcToLocalTime(someDateTimeField)
FROM someTable



2> sebagomez..:

在您的数据库中保存UTC时间,并在每次向用户显示时将这些时间本地化

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有