sql-server - 在 SQL Server 2008 中将 varchar 转换为 datetime(127)
问题描述
我有一个有 2 列的表:endReportDate (varchar)
,reportType (varchar)
endReportDate(varchar), reportType(varchar)
-------------------------------------------
2018-10-09T16:01Z FEDEX
我需要以“2018-08-07T16:01:30”格式选择此数据。
我正在尝试这样:
select convert(Datetime, endDateReport, 127) from table
但我收到此错误:
从字符串转换日期和/或时间时转换失败。
如何解决?
解决方案
这里的问题是您存储的日期和时间值是varchar
. 始终将您的数据存储在代表它的数据类型中;varchar
不是“一刀切”的数据类型。
因此,最好的解决方案是修复您的设计。假设您的所有数据都具有格式yyyy-MM-ddThh:mmZ
,那么您可以执行以下操作:
--UPDATE values to be a valid datetime String
UPDATE YourTable
SET endReportDate = REPLACE(endReportDate,'Z','') + ':00';
GO
--Chnage the data type
ALTER TABLE YourTable ALTER COLUMN endReportDate datetime2(0);
GO
推荐阅读
- angular - Angular control.registerOnChange 不是一个函数。给出的示例链接
- tfs - 是否可以使用标签中字符串的起始字母返回测试用例的查询
- docker - 对 Jenkins 的 Rest-Api 调用总是抛出 401
- python - 单例和等待协程的重用
- angular - ServiceWorkerModule.register 与动态 URL
- python - 如何忽略构造函数属性?
- linux - 是否可以在 sles 12 中安装 docker-compose?
- laravel - Laravel Mix 4.0 无法将全局混合 css 与本地文件 css 结合起来
- swiftui - SwiftUI 项目中的“使用未解析的标识符”
- c# - MatriX 无法登录 Xamarin