Varchar tarih alanını tarih saat veri türüne dönüştürme [yineleme]
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
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.
-- 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:
- DateTime için tablonuza yeni bir sütun ekleyin
- 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.
- 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