提问人:Nathan M 提问时间:7/15/2023 最后编辑:marc_sNathan M 更新时间:7/18/2023 访问量:84
SQL 日期时间列表示不正确
SQL Datetime column represented incorrectly
问:
当尝试与 类型的 SQL Server 表中的列进行交互时,某一行似乎解析不正确。DATETIME
最初以 的格式表示,值解析不正确为 ,当尝试以任何方式(、等)与该值交互时,它将解析为某种形式的日期。DATETIME
dd:mm:yyyy hh:ss
12/6/2022 22:06
CAST
CONVERT
'2022-12-07T03:06:00'
这是我发现的 600 个条目中唯一一个解析不正确的值 ()。'12/6/2022 22:06'
不幸的是,我只有对此数据库的读取访问权限。
我试图强制将此值转换为文本 () 或其他格式,但无论日期如何都会被解析,例如:nvarchar
DATE
CAST(dateoccurred AS varchar(19))
将变成.'Dec 7 2022 3:06AM'
是否有转换函数可以将查询中最初表示的值强制转换为文本格式,以便稍后在数据管道中进行分析?
使用的版本是 Microsoft SQL Server 2019。
答:
1赞
David Browne - Microsoft
7/15/2023
#1
要可靠地将日期时间转换为文本并返回,请使用 ISO 8601 格式,即 CONVERT 中的样式 126
select convert(varchar(200), dateoccured, 126)
文本将如下所示
2023-07-14T14:25:50.250
评论
1赞
Panagiotis Kanavos
7/15/2023
我怀疑有人使用了 127,生成了 UTC 时间并省略了 ,或者 OP 忘记粘贴它Z
0赞
Nathan M
7/18/2023
#2
问题最终是格式存在差异,最初在 Web 应用程序中显示的日期格式为 mm:dd:yyyy,但从 api 中提取的日期采用 yyyy:mm:dd,并伴有时区差异。
评论
22:06
3:06
datetimeoffset
datetime