DatePicker使用mm / dd / yyyy格式从访问数据库获取,但我想要dd / mm / yyyy格式

时间:2016-12-10 22:50:31

标签: vb.net ms-access

我有以下代码:

da = New OleDbDataAdapter("SELECT * FROM [Transactions] WHERE [TransDate] =  #" & Format(StartDatePicker.Value, "dd/mm/yyyy"), myConnection)

当我选择日期值大于12的日期时,它通常使用dd / mm / yyyy格式,但是当我选择12以下的日期时,它使用mm / dd / yyy格式。

我正在使用vb.net和ms访问。

3 个答案:

答案 0 :(得分:1)

Plutonix已经解释过日期是一个日期,格式仅供人类使用。以下是您的代码的修订版本,无论文化如何都可以使用:

Dim sql As string = <sql>SELECT * FROM [Transactions] 
  WHERE [TransDate] >= @tStart and [TransDate] < @tEnd
</sql>.Value
Dim da = New OleDbDataAdapter(sql, myConnection)

Dim start = StartDatePicker.Value.Date
Dim end = StartDatePicker.Value.Date.AddDays(1)

da.SelectCommand.Parameters.AddWithValue("@tStart", start)
da.SelectCommand.Parameters.AddWithValue("@tEnd", end) 

答案 1 :(得分:0)

我弄清楚问题出在哪里。从数据库中读取08/12/2016令人困惑。它读作mm / dd / yyyy,而15/12/16读作dd / MM / yyyy。我将datepicker设置为yyyy / MM / dd。非常感谢您的帮助

答案 2 :(得分:0)

您在SQL中使用错误的格式来表示日期值的字符串表达式。因此:

da = New OleDbDataAdapter("SELECT * FROM [Transactions] WHERE [TransDate] = #" & Format(StartDatePicker.Value, "yyyy\/mm\/dd"), myConnection)

请注意,该格式与您希望用于显示日期的格式无关。

此外,虽然这会有效,但请吸收使用更聪明方法的评论。