【发布时间】:2024-05-22 20:30:02
【问题描述】:
我有一个 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 的错误?
【问题讨论】:
-
日期没有格式。这是您用来查看日期的应用程序如何决定如何在视频/打印机上以字符串格式显示日期。您使用哪个应用程序查看数据字段?
-
在我的应用程序中,我正在使用自定义日期格式 dd/MM/yyyy 填充 DateTimePicker,如果日期设置为 2099 年 1 月 1 日,则 DateTimePicker 将日期显示为 1/ 1/1999。我已经将其追溯到最初的数据拉取,因为当我在调试器中查看填充后的 DataTable 时,它显示日期为 1/1/99 并且我的 Windows 区域设置设置为猜测 1930 年和2029.
-
听起来你在某处应用了转换的代码。你可以edit你的帖子来展示INSERT过程;您还可以在发布的代码中添加一两行,以便在读取数据表后立即打印数据表中的日期。
-
我相信我已经部分弄清楚了。我的 Windows 设置设置为 mm/dd/yy。我的应用程序中的遗留代码将数据从 SQL 拉到 DataTable 中。然后它将日期转换为字符串而不指定格式,因此它使用我的本地设置(mm/dd/yy),将年份截断为 2 位。最后,它获取该字符串并将其设置为 DateTimePicker 的值(然后将 2 位数年份转换回 4 位数年份)
-
converting the date to a string你的问题
标签: sql-server vb.net datetime datatable sqldataadapter