Kir*_*nov 0 sql-server sql-server-2008
我有2列的表:endReportDate (varchar),reportType (varchar)
endReportDate(varchar), reportType(varchar)
-------------------------------------------
2018-10-09T16:01Z FEDEX
Run Code Online (Sandbox Code Playgroud)
我需要以"2018-08-07T16:01:30"格式选择此数据.
我这样想:
select convert(Datetime, endDateReport, 127) from table
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
从字符串转换日期和/或时间时转换失败.
怎么解决?
这里的问题是你存储日期和时间值是一个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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |