代码之家  ›  专栏  ›  技术社区  ›  BoltBait

如何处理SQL中的时间存储

  •  13
  • BoltBait  · 技术社区  · 17 年前

    我希望以最简单的方式来实现这一点,因此,只要解决方案易于实现,C#和SQL的组合就可以了。(如果有必要的话,我通常的风格是在存储过程中做更多的工作,而在C#中做更少的工作。)

    你能给我看一些示例代码吗?谢谢

    3 回复  |  直到 17 年前
        1
  •  18
  •   Dave Markle    17 年前

    始终以协调世界时(UTC,又称GMT)存储日期时间数据

    • 这避免了所有时区问题
    • 这允许不同时区中的事务保持同步
    • 这允许您将数据移动到不同时区的不同服务器上,而不会把一切搞砸
    • 等等,“宇宙”时间,有意义吗?

    -- 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
  •  7
  •   sebagomez    17 年前

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

        3
  •  4
  •   Barret7sc Barret7sc    17 年前

    在C#中,对DateTime对象使用.ToUniversalTime()获取UTC时间,将其存储在服务器上,然后使用.ToLocalTime()将其转换回。