Database 使用vb.net将US转换为GB日期时间并返回数据

Database 使用vb.net将US转换为GB日期时间并返回数据,database,vb.net,visual-studio-2010,date,Database,Vb.net,Visual Studio 2010,Date,这就是我所拥有的: Dim UsDateFormat As Date = DateTime.Parse(DataDate, New System.Globalization.CultureInfo("en-US")) Da = New OleDbDataAdapter("SELECT * FROM RawStockData WHERE PointDateTime >=#" & UsDateFormat.ToShortDateString & "# AND PointDa

这就是我所拥有的:

Dim UsDateFormat As Date = DateTime.Parse(DataDate, New System.Globalization.CultureInfo("en-US")) 

Da = New OleDbDataAdapter("SELECT * FROM RawStockData WHERE PointDateTime >=#" & UsDateFormat.ToShortDateString & "# AND PointDateTime < #" & UsDateFormat.AddDays(1).ToShortDateString & "#", Con)
当选择9月的任何日期时,它将显示30日的数据,这是唯一一个有数据的日期,当选择30日时,它将用字符串回复未识别为有效日期时间


我哪里出了问题?

也许您的问题可以通过使用解决

在尝试ParseExact之后,请使用以避免每个带有日期和日期时间的SQL错误

示例代码:

Dim strYourData As String = "2013/10/02"
Dim dtYourData As DateTime = DateTime.ParseExact(strYourData, "yyyy/MM/dd", Nothing)

Dim cmdSelectRawStockData As System.Data.OleDb.OleDbCommand = yourOLEConnection.CreateCommand
cmdSelectRawStockData.CommandText = "SELECT * FROM RawStockData WHERE " _
    & "PointDateTime >= @YourData1 AND " _
    & "PointDateTime <= @YourData2"

cmdSelectRawStockData.Parameters.AddWithValue("@YourData1", SqlDbType.DateTime).Value = dtYourData
cmdSelectRawStockData.Parameters.AddWithValue("@YourData2", SqlDbType.DateTime).Value = DateAdd(DateInterval.Day, 1, dtYourData)

Da = New System.Data.OleDb.OleDbDataAdapter(cmdSelectRawStockData)

使用下面的代码,反之亦然

Dim dt As DateTime = DateTime.ParseExact(InputBookingdatesingleday.Text,
                                         "dd/MM/yyyy",
                                         CultureInfo.GetCultureInfo("en-GB"))

Dim dt As DateTime = DateTime.ParseExact(InputBookingdatesingleday.Text,
                                         "dd/MM/yyyy",
                                         CultureInfo.GetCultureInfo("en-US"))

在使用.ToSortDateString的地方,将其替换为.ToString MM dd

至少对于ms sql而言,这是一种安全的日期格式,可以在不考虑区域性的情况下使用,并且始终能够正确解释

编辑:
如果您真的想要最终使用的格式,只需使用.ToStringMM/dd/yy

尽管它很混乱,但我使用了

 Da = New OleDbDataAdapter("SELECT * FROM RawStockData WHERE PointDateTime >=#" & DataDate.Date.Month.ToString & "/" & DataDate.Date.Day.ToString & "/" & DataDate.Date.Year.ToString & "# AND PointDateTime <#" & DataDate.AddDays(1).Date.Month.ToString & "/" & DataDate.AddDays(1).Date.Day.ToString & "/" & DataDate.AddDays(1).Date.Year.ToString & "#", Con)

最后。

InputBookingdatesingleday和CultureInfo没有声明,我发誓我在另一个stackoverflow问题中看到了这段代码?