varchar 날짜 필드를 datetime 데이터 유형으로 변환 [중복]
Dec 16 2020
날짜 / 시간을 나타내는 데이터를 저장하기 위해 varchar를 사용하는 실수를 저질렀습니다. 이제 다음과 같이 varchar로 저장된 텍스트 데이터 열을 변환하려고합니다.
2020-11-25T14:22:41.3539327Z
datetime 데이터 유형을 저장하는 열로.
답변
1 Larnu Dec 16 2020 at 02:49
모든 데이터가 형식 yyyy-MM-ddThh:mm:ss.nnnnnnn
이면 열의 데이터 유형을 변경할 수 있습니다.
ALTER TABLE dbo.YourTABLE ALTER COLUMN YourColumn datetime2(7);
거기에 시간대가 필요하면 datetimeoffset(7)
대신 사용하십시오.
Brad Dec 16 2020 at 02:33
-- to fix it you can use convert, below uses GetDate for examaple
SELECT convert(varchar, getdate(), 120)
필요한 정밀도에 따라 아래 링크를 사용하여 찾아서 120을 해당 정밀도에 필요한 숫자로 변경할 수 있습니다.
https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/
테이블을 수정하려면 다음 단계를 따라야합니다.
- DateTime에 대한 테이블에 새 열 추가
- 위의 변환을 사용하여 테이블에서 업데이트를 실행하여 varchar 필드에서 변환 된 값으로 새 열을 업데이트합니다.
- 그런 다음 varchar 데이터가있는 열을 삭제합니다.
위에서 설명한 단계를 수행하는 코드
ALTER TABLE dbo.TableName ADD NewDateTimeCOL DATETIME
-- NOTE if your table is LARGE you will not want to do a direct update like this but do looping for performace purposes
UPDATE dbo.TableName
SET NewDateTimeCOL = convert(varchar, OldDateTimeCOL, 120)
ALTER TABLE dbo.TableName DROP COLUMN OldDateTimeCOL