【发布时间】:2014-04-22 02:39:47
【问题描述】:
日期时间格式转换有问题。在我的数据库表中,我有一列jour,格式如下:
01/02/2014 00:00:00
即DD/MM/YYYY 00:00:00。当我这样做时:
Dim date1 As String = Session("date1")
Dim date2 As String = Session("date2")
Dim datefirst As DateTime
Dim dateSecond As DateTime
Try
datefirst = DateTime.Parse(date1)
dateSecond = DateTime.Parse(date2)
Catch ex As Exception
End Try
Dim report As ReportDocument = New ReportDocument()
Dim reportPath As String = Server.MapPath("Reports\Prix.rpt")
Dim ds As DataSet
Dim cnn As SqlConnection
Dim connectionString As String = "Data Source=HP-PC\SQLEXPRESS;Initial Catalog=ReportingFormation;Integrated Security=True;Pooling=False"
Dim sql As String = ""
Dim dscmd As SqlDataAdapter
cnn = New SqlConnection(connectionString)
cnn.Open()
sql = "SELECT * FROM PrixProduit where ( Jour >= '" + datefirst + "'and Jour <='" + dateSecond + "')"
dscmd = New SqlDataAdapter(sql, cnn)
ds = New DataSet()
dscmd.Fill(ds, "PrixProduit")
使用这些值:
date1= 30/01/2014
日期2 = 06/02/2014
日期优先 = #1/30/2014#
dateSecond= #2/6/2014#
所以我得到了这个错误
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
在这行代码中:
dscmd.Fill(ds, "PrixProduit")
所以我需要知道
- 这个错误的原因是什么?
- 我该如何解决?
【问题讨论】:
-
数据库列的格式在这里应该无关紧要...
-
@Crono 你能解释一下你的想法吗?
-
您说您的数据库列具有特定的日期格式。怎么会这样?如果它是 DateTime 类型(应该是),那么就没有任何类型的数据库格式,不是吗?
-
您将日期作为字符串存储在 Session 变量中?您应该将其存储为
Date(或DateTime)。这样您就不必进行String到DateTime的转换。 -
你应该使用
parameterized查询来避免SQL injection,同时解决你的格式问题,即单引号。
标签: sql sql-server vb.net date datetime