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

use*_*942 2 sql vb.net sql-server

我想根据数据库中时间戳字段的年份和月份在我的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 & "'"
Run Code Online (Sandbox Code Playgroud)

J C*_*per 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
Run Code Online (Sandbox Code Playgroud)