【问题标题】:SELECT * FROM MyTable WHERE [Date] = ([Date] + 8 hours)SELECT * FROM MyTable WHERE [日期] = ([日期] + 8 小时)
【发布时间】:2017-03-26 18:54:03
【问题描述】:

我的问题始于我的服务器位于完全不同的国家/地区,因此我们有 8 小时 (GMT) 的差异。

所以当我尝试做这样的事情时:

CreateNewDataSet("SELECT * FROM tblArchives WHERE [Date] =" & DateAndTime.Today.Date.ToString("MM/dd/yyyy") & "'; & , "tblArchives")

它不会得到所有结果,因为它今天发生在我的国家,但昨天发生在服务器所在的地方。

我尝试使用DATEADD 函数失败。

有什么办法可以做到:

SELECT FROM WHERE [DATE+8 hours] =DateAndTime.Today.Date.ToString("MM/dd/yyyy")

【问题讨论】:

  • 请告诉我们您是如何使用 DateAdd 功能的?

标签: sql sql-server vb.net


【解决方案1】:

为什么不从条件语句的另一边减去小时数:

CreateNewDataSet("SELECT * FROM tblArchives WHERE [Date] =" & DateAdd(DateInterval.Hour, -8, DateAndTime.Today.Date).ToString("MM/dd/yyyy") & "'; & , "tblArchives")

【讨论】:

    【解决方案2】:

    您可以将日期计算移到 SQL 中,以便获得服务器日期,例如

    SELECT * FROM tblArchives WHERE Date = DateAdd(HH, +8,getdate())
    

    尝试运行DateAdd(HH, +8,getdate()) 以查看它在查询中使用的实际日期和时间。我有类似的需求,但我总是将时间设置为午夜后 1 毫秒到午夜前 1 毫秒。这将确保您获得特定日期的所有数据。

    【讨论】:

      【解决方案3】:

      你必须使用DateTime.AddHours方法

      "SELECT * FROM tblArchives WHERE [Date] =" & 
      DateAndTime.Today.AddHours(-8).ToString("MM/dd/yyyy")
      

      不要将+8 小时添加到[Date] 列,而是将-8 添加到当前服务器日期

      【讨论】:

      • 谢谢大家,我会试试你们的解决方案!
      • @ILavi 还在等你的回复
      • @ILavi 如果答案解决了您的问题,您必须accept it 或提供反馈以获得更多帮助
      猜你喜欢
      • 2017-03-01
      • 2013-10-22
      • 1970-01-01
      • 2020-07-21
      • 2012-12-11
      • 1970-01-01
      • 2018-10-23
      • 2010-09-07
      • 2018-11-03
      相关资源
      最近更新 更多