我有一个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的错误?
答案 0 :(得分:1)
找到答案。
我的Windows区域设置设置为2位数年份。 DataTable正确保存了完整日期,但在设置DateTimePicker的值之前,DataTable中保存的日期已转换为未指定特定日期格式的String。
由于未指定格式,因此使用了我的本地设置并截断了当年的前两位数字。
毋庸置疑,但在将日期转换为字符串时要小心,并在有意义时指定特定格式。理想情况下,不要首先将日期转换为字符串(在我的情况下,执行此操作的是遗留代码)!