【问题标题】:How do you prevent time zone translation on a SqlConnection?如何防止 SqlConnection 上的时区转换?
【发布时间】:2010-09-20 22:04:28
【问题描述】:

我这里有一个完全在 GMT 上运行的数据库。但是,客户端计算机可能在许多不同的时区(包括 BST)上运行。当您使用 SqlConnection 拉回数据时,它将转换日期时间值,例如

2008 年 8 月 19 日

变成

2008 年 8 月 18 日 23:00:00。

我的问题是,有没有办法指定您不希望发生这种翻译的连接?

【问题讨论】:

    标签: c# database timezone


    【解决方案1】:

    您如何访问数据?

    我在从 web 服务传递 DataSets / DataTables 时遇到了同样的问题。

    我通过在 DataTable 中设置 DataColumn.DateTimeMode 属性来解决它

    returnedDataTable.Columns("ColumnName").DateTimeMode = DataSetDateTime.Unspecified
    

    后来就好了。

    不知道会不会有帮助。

    【讨论】:

      【解决方案2】:

      仅在数据库中保留 UTC 值。在从数据库存储/检索时,让您的业务对象始终转换为/从 UTC/本地时间转换,以便用户可以查看和输入本地时间值。您可以通过在 BO 的 getter/setter 方法中实现转换来做到这一点,以便私有变量采用 UTC,因此当它存储回数据库时,它已经是您需要的形式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-08
        • 2016-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-27
        相关资源
        最近更新 更多