我想將格式的列轉換mm/dd/yyyy為日期時間,但是當我這樣做時,我收到以下錯誤:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
我在其他帖子中發現這意味著某些日期沒有意義,例如10/35/2021. 我試圖通過切片 varchars 來找到錯誤的日期以獲取日期,SUBSTRING(date, 3, 2)但事實證明有些日期在表單中m/d/yyyy,所以當我切片時,我得到類似1/.
我不知道如何找到錯誤的日期,以及如何(即使有錯誤的日期)將所有內容轉換為日期時間。
謝謝!
uj5u.com熱心網友回復:
如果您的某些資料在MM/dd/YYYY其中,而有些資料M/d/yyyy確實會造成一些混亂。我可能會做這樣的事情:
--Add a new varchar column (yes varchar) to save a copy of your bad data
ALTER TABLE dbo.YourData ADD BadDate varchar(10);
GO
--Change the data you have to the ISO format yyyyMMdd and store the bad data in the BadDate column
UPDATE dbo.YourData
SET DateColumn = CONVERT(varchar(8),TRY_CONVERT(date,DateColumn,101),112),
BadDate = CASE WHEN TRY_CONVERT(date,DateColumn,101) IS NULL THEN DateColumn END
WHERE DateColumn IS NOT NULL;
GO
--Change data type of your data column
ALTER TABLE dbo.YourData ALTER COLUMN DateColumn date NULL;
GO
--You can view your bad data with:
SELECT BadData
FROM dbo.YourData
WHERE BadData IS NOT NULL;
uj5u.com熱心網友回復:
如果您只想找到具有明顯錯誤日期的值的行 - 忽略任何歧義 - 只需使用try_convert并檢查 NULL
例如
with dates as (
select * from (values('01/02/2021'),('02/01/2021'),('33/02/2021'),('01/13/2021'))v(d)
)
select *
from dates
where Try_Convert(date, d) is null
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/390734.html
標籤:sql sql-server 约会时间 格式
