2012-04-29 64 views
0

我有一个WCF服务和一个Windows应用程序,都在不同的时区。现在这个Windows应用程序通过WCF服务保存和检索数据。从WCF服务获取无效的日期时间值

当我做一个具有作为数据类型的日志时间作为日期时间列的表的批量插入,我能够将此本地日期时间保存在数据库中,但是当我尝试检索此表时,它会提供所有错误值日志时间列。

在SO上发现了很多类似的问题,但我无法实现UTC时间,因为我引用的表包含一千个记录,它每5-10秒更新一次。

有什么办法可以阻止WCF服务完成自动日期时间转换。

请指导。

回答

1

这是什么意思:“它给出了logtime列的所有错误值。”时间是数据库服务器的本地时间吗?那不是你想要的?

我假设你希望logtime列是客户端机器的时区。是对的吗?我还假设,因为它没有被指定,你使用SQL Server中的GetDate()的默认值来设置logtime列。我还假设,因为它没有指定,你正在使用SQL Server。

如果要使用客户端的时区,那么你有几种选择:

  1. 更改数据库服务器在同一时区的客户机的时区。
  2. 将时间传递给WCF服务作为参数。 (我假设WCF服务与数据库服务器在同一时区的服务器上运行。)
  3. 保持原样,但在检索数据时转换为正确的时区。

可能还有一些选择,但如果您澄清了我所做的假设,这将有所帮助。

这是什么意思:“通过WCF服务完成自动日期时间转换?”它是否使用当地时区?如果是这样,那么你需要让它接受一段时间,而不是自己确定它。也许你应该显示一些代码。这将有所帮助。 OMG!

+0

OMG!鲍勃,我不敢相信,你的假设怎么可能是真的。 :)让我回答你剩下的问题;错误的值意味着,我可以在数据库服务器的logtime列中看到正确的值。但是当我尝试检索它时,logtime列包含的值既不是我可以在数据库中看到的时间,也不是数据库服务器上的本地时间。这意味着服务将日志时间假设为本地时间(服务器)并尝试将其转换为我的时区,因此对我而言不正确。 – Bravo 2012-04-30 06:22:09

+0

您的第一个选项看起来不错,但不符合我的情况,因为我的客户端应用程序可以位于世界任何地方。我不能使用你的第二个和第三个选项因为我说,我会发送和检索大量的数据,所以我不能转换所有。它不可行 – Bravo 2012-04-30 06:29:58

+0

您可能需要发布代码以获得进一步的帮助。 – 2012-04-30 12:42:40