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/

테이블을 수정하려면 다음 단계를 따라야합니다.

  1. DateTime에 대한 테이블에 새 열 추가
  2. 위의 변환을 사용하여 테이블에서 업데이트를 실행하여 varchar 필드에서 변환 된 값으로 새 열을 업데이트합니다.
  3. 그런 다음 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