使用 DateTimePicker 将日期转换为字符串
Converting Date to string with DateTimePicker
Dim sql As String = "SELECT * FROM old where inputdate BETWEEN '" + DateTimePicker2.Value.ToShortDateString() + "' AND '" + DateTimePicker3.Value.ToShortDateString() + "';"
Dim dataadapter As New SqlDataAdapter(sql, connection)
Dim ds As New DataSet()
connection.Open()
dataadapter.Fill(ds, "old_table")
connection.Close()
我有 2 个短格式的 DateTimePickers。在SQL中,数据类型为日期的列名"inputdate"。
当我选择天数 <= 12 的日期时,一切正常。当我选择天数 > 12 的日期时,出现此错误。我可以看到这是一天和一个月的问题,但我仍然无法找到解决方案。
非常感谢任何帮助”:从字符串转换日期 and/or 时间时转换失败。
ToShortDateString()
的输出格式对 sql 服务器无效,并且 sql 混合了日期和月份。
试试这个
Dim sql As String = "SELECT * FROM old where inputdate BETWEEN '" + DateTimePicker2.Value.ToString("yyyy-MM-dd") + "' AND '" + DateTimePicker3.Value.ToString("yyyy-MM-dd") + "';"
阅读this更多信息。
试试这个:
Dim dt1 as sring = String.Format("{0:yyyy/MM/dd}", Convert.ToDateTime(DateTimePicker2.Value.ToShortDateString()))
Dim dt2 as sring = String.Format("{0:yyyy/MM/dd}", Convert.ToDateTime(DateTimePicker3.Value.ToShortDateString()))
Dim sql As String = "SELECT * FROM old where inputdate BETWEEN '" + dt1 + "' AND '" + dt2 + "';"
Dim dataadapter As New SqlDataAdapter(sql, connection)
我建议你先用Parameter
再用SqlDbType.DateTime
然后把DateTime
直接传给参数(不需要转换),也避免SQL
注射,像这样:
Dim sql As String = "SELECT * FROM old where inputdate BETWEEN @startDate AND @endDate;"
Dim cmd As New SqlCommand(sql, connection)
cmd.Parameters.Add("@startDate", SqlDbType.DateTime).Value = DateTimePicker2.Value
cmd.Parameters.Add("@endDate", SqlDbType.DateTime).Value = DateTimePicker3.Value
Dim dataadapter As New SqlDataAdapter(cmd)
Dim ds As New DataSet()
connection.Open()
dataadapter.Fill(ds, "old_table")
connection.Close()
基本解决方案是您必须将日期提供为 mm/DD/YYYY 格式或 YYYY-MM-DD 日期格式提供给 ms-sql 查询。
因此,在将日期传递给查询之前,将您的日期转换为 mm/DD/YYYY 格式或 YYYY-MM-DD 格式。
Dim sql As String = "SELECT * FROM old where inputdate BETWEEN '" + DateTimePicker2.Value.ToShortDateString() + "' AND '" + DateTimePicker3.Value.ToShortDateString() + "';"
Dim dataadapter As New SqlDataAdapter(sql, connection)
Dim ds As New DataSet()
connection.Open()
dataadapter.Fill(ds, "old_table")
connection.Close()
我有 2 个短格式的 DateTimePickers。在SQL中,数据类型为日期的列名"inputdate"。 当我选择天数 <= 12 的日期时,一切正常。当我选择天数 > 12 的日期时,出现此错误。我可以看到这是一天和一个月的问题,但我仍然无法找到解决方案。 非常感谢任何帮助”:从字符串转换日期 and/or 时间时转换失败。
ToShortDateString()
的输出格式对 sql 服务器无效,并且 sql 混合了日期和月份。
试试这个
Dim sql As String = "SELECT * FROM old where inputdate BETWEEN '" + DateTimePicker2.Value.ToString("yyyy-MM-dd") + "' AND '" + DateTimePicker3.Value.ToString("yyyy-MM-dd") + "';"
阅读this更多信息。
试试这个:
Dim dt1 as sring = String.Format("{0:yyyy/MM/dd}", Convert.ToDateTime(DateTimePicker2.Value.ToShortDateString()))
Dim dt2 as sring = String.Format("{0:yyyy/MM/dd}", Convert.ToDateTime(DateTimePicker3.Value.ToShortDateString()))
Dim sql As String = "SELECT * FROM old where inputdate BETWEEN '" + dt1 + "' AND '" + dt2 + "';"
Dim dataadapter As New SqlDataAdapter(sql, connection)
我建议你先用Parameter
再用SqlDbType.DateTime
然后把DateTime
直接传给参数(不需要转换),也避免SQL
注射,像这样:
Dim sql As String = "SELECT * FROM old where inputdate BETWEEN @startDate AND @endDate;"
Dim cmd As New SqlCommand(sql, connection)
cmd.Parameters.Add("@startDate", SqlDbType.DateTime).Value = DateTimePicker2.Value
cmd.Parameters.Add("@endDate", SqlDbType.DateTime).Value = DateTimePicker3.Value
Dim dataadapter As New SqlDataAdapter(cmd)
Dim ds As New DataSet()
connection.Open()
dataadapter.Fill(ds, "old_table")
connection.Close()
基本解决方案是您必须将日期提供为 mm/DD/YYYY 格式或 YYYY-MM-DD 日期格式提供给 ms-sql 查询。
因此,在将日期传递给查询之前,将您的日期转换为 mm/DD/YYYY 格式或 YYYY-MM-DD 格式。