Varchar tarih alanını tarih saat veri türüne dönüştürme [yineleme]

Dec 16 2020

Tarih / saati temsil eden verilerimi saklamak için varchar kullanma hatası yaptım. Şimdi varchar olarak depolanan metin verisi sütunumu şu şekilde dönüştürmeye çalışıyorum:

2020-11-25T14:22:41.3539327Z

Bir tarih saat veri türünü depolayan bir sütuna.

Yanıtlar

1 Larnu Dec 16 2020 at 02:49

Tüm verilerinizin formatta olması koşuluyla yyyy-MM-ddThh:mm:ss.nnnnnnn, sütunun veri türünü değiştirebilirsiniz:

ALTER TABLE dbo.YourTABLE ALTER COLUMN YourColumn datetime2(7);

Orada saat dilimine ihtiyacınız varsa, datetimeoffset(7)bunun yerine kullanın.

Brad Dec 16 2020 at 02:33
-- to fix it you can use convert, below uses GetDate for examaple
SELECT convert(varchar, getdate(), 120)

İhtiyacınız olan hassasiyete bağlı olarak, aşağıdaki bağlantıyı kullanarak onu bulabilir ve 120'yi bu hassasiyet için ihtiyacınız olan sayıya değiştirebilirsiniz.

https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/

Tablonuzu düzeltmek için şu adımları izlemelisiniz:

  1. DateTime için tablonuza yeni bir sütun ekleyin
  2. Yeni sütunu varchar alanınızdan dönüştürülen değerle güncellemek için yukarıdaki Dönüştür'ü kullanarak tablonuzda bir güncelleme çalıştırın.
  3. Ardından, varchar verilerini içeren sütunu bırakın.

Yukarıda özetlediğim adımları uygulamak için kod

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