我的问题始于我的服务器位于完全不同的国家/地区,因此我们有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")
答案 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
添加到当前服务器日期