SELECT * FROM MyTable WHERE [Date] =([Date] + 8 hours)

时间:2017-03-26 18:54:04

标签: sql sql-server vb.net

我的问题始于我的服务器位于完全不同的国家/地区,因此我们有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")

3 个答案:

答案 0 :(得分:1)

为什么不从条件声明的另一侧减去小时数:

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

答案 1 :(得分:1)

您可以将日期计算移动到SQL中,以便使服务器日期类似

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

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

答案 2 :(得分:1)

您必须使用DateTime.AddHours方法

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

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