select语句中的where子句 - datetime问题

时间:2012-01-24 17:20:15

标签: sql sql-server vb.net

我想根据数据库中时间戳字段的年份和月份在我的select语句中放置一个where子句

我有一个月和一年的下拉列表,它给了我以下字符串01/2012

我的数据库中的日期格式是“2012-01-01 00:00:00”但是当我选择一个单独的日期并将其放在消息框中时,它会转换为“01/01/2012”

我已修改下面的选择语句以反映转换日期。但是我仍然没有给出正确的细节。有任何想法吗?在处理时间戳字段时是否需要使用特定格式?我甚至可以在select语句中使用“Right”函数吗?

Dim newRecordDate As String = val1 & "/" & ComboBox2.SelectedValue 
Dim sql2 As String = "Select CatA, CatB, CatC,  Cost, Currency, MarketingCode, Comment, RecordDate from vw_tblP_Usage_Details where puid = '" & puid & "' right(RecordDate, 7) = '" & newRecordDate & "'"

1 个答案:

答案 0 :(得分:7)

我说使用参数和SqlParameter类将参数值从.NET客户端传递给sql server而不是使用串联和字符串格式。它让生活更轻松。

像这样:

Dim myDate As Date = DateTime.Now
Dim sql As String = "Select * from SomeTable where MyDate = @some_param"

Using Command As New SqlClient.SqlCommand(sql)
    Command.Parameters.AddWithValue("@some_param", myDate)

    Using reader As SqlClient.SqlDataReader = Command.ExecuteReader()

        'other code here
    End Using
End Using