SqlDataAdapter将DateTime截断为2位数

时间:2016-02-02 18:01:25

标签: sql-server vb.net datetime datatable sqldataadapter

我有一个SQL表,我试图读入我的应用程序,其中包含一个日期时间列。当我在我的应用程序中使用SqlDataAdapter填充DataTable时,它将年份截断为2位数年份(因此1/1/1999或1/1/2099都显示为1/1/99)。

Dim dt As DataTable
Using connection As New SqlConnection("...")
    Dim query As String = "SELECT * FROM [foo]"
    Dim adapter As New SqlDataAdapter(query, connection)

    connection.Open()
    adapter.Fill(dt)
End Using

直接在SQL中执行相同的SELECT语句会返回一个4位数年份的日期时间,因此它似乎是一个VB问题而不是SQL问题。

我怎样才能确保它读取全年并避免出现类似Y2K的错误?

1 个答案:

答案 0 :(得分:1)

找到答案。

我的Windows区域设置设置为2位数年份。 DataTable正确保存了完整日期,但在设置DateTimePicker的值之前,DataTable中保存的日期已转换为未指定特定日期格式的String。

由于未指定格式,因此使用了我的本地设置并截断了当年的前两位数字。

毋庸置疑,但在将日期转换为字符串时要小心,并在有意义时指定特定格式。理想情况下,不要首先将日期转换为字符串(在我的情况下,执行此操作的是遗留代码)!

相关问题