【发布时间】:2011-08-25 00:59:36
【问题描述】:
我正在尝试使用 asp.net 创建一个拍卖网站。我的拍卖开始日期和时间以及结束日期和时间作为日期时间类型存储在我的 sql server 2008 r2 数据库中。我正在使用 vb.net。我正在尝试创建一个选择语句,我可以在其中查询相对于当前日期和时间的日期和时间部分(以便仅显示当前正在进行的拍卖)。我可以使用 Date.Now 函数成功查询日期部分,但是时间给我带来了麻烦。 DateAndTime.Now 不起作用。我什至尝试在数据库中分离时间和日期,但仍然无法得到有效的查询。
这是我尝试过的两个代码示例:
Dim Connection As SqlConnection = New SqlConnection(...)
Dim Command As SqlCommand = New SqlCommand()
Dim _Reader As SqlDataReader
Command.Connection = Connection
Command.CommandText = "Select ... from Auctions where Start_Date_Time > " & DateAndTime.Now & " And End_Date_Time > " & DateAndTime.Now
其中 Start_Date_Time 和 End_Date_Time 是 DateTime 类型。
还有:
Dim Connection As SqlConnection = New SqlConnection(...)
Dim Command As SqlCommand = New SqlCommand()
Dim _Reader As SqlDataReader
Command.Connection = Connection
Command.CommandText = "Select ... from Auctions where Start_Date >= " & Date.Today & "Start_Time <= " & DateAndTime.Now.ToLongTimeString & " And End_Date >= " & Date.Today & " And End_Time <= " & DateAndTime.Now.ToLongTimeString
其中 Start_Date 和 End_Date 属于 Date 类型,而 Start_Time 和 End_Time 属于 Time(7) 类型。
感谢任何建议, 提前致谢
【问题讨论】:
-
使用参数化查询。不要将日期和时间作为字符串传递。您也可以考虑使用 TSQL
getdate()和dateadd函数,而不是根据当前时间传递参数。 -
@Martin 关于使用 T-SQL 值的唯一警告是服务器可能位于不同的时区。我们曾经遇到过一个问题,英国数据中心的一个应用程序写入弗吉尼亚州的数据库,没有人同意应用程序应该显示什么或应该存储在数据库中的内容。从那时起,我一直努力在 UTC 中部署 SQL 和应用服务器,但如果应用需要应用服务器的日期/时间...
标签: asp.net vb.net sql-server-2008-r2