Merhaba Arkadaşlar,
SQL tarafında bazı tablolarda tarih alanına alternatif olarak EpochTime değeri tutulmaktadır. Bu değer genel bir terim olup 01.01.1970den bu zamana geçen saniyeyi bize vermektedir.
Eğer tablolarınızda böyle bir alan tanımlanmışsa bu alanın tanımlanmasındaki ana hedef aşağıdakilerden birisi olabilir:
- taşınabilirlik
- hesaplama kolaylığı
- veri saklama ve işlem hafifliği
- sıralama ve karşılaştırma kolaylığı
Dezavantajlarıda vardır ki bunlardan ilki gözle baktığınızda bu sayısal ifadenin hangi zamana karşı geldiğini yakalayamayız. Bu durumda kendimize bir converter yazmamız gerekecektir. Bugün birlikte bu converter'ı yazıyor olacağız.
SQL ortamında;
--EpochTime2Date
declare @epochtime bigint=1700392556;
select DATEADD(second,@epochtime,'19700101') as convertedTime
--Date2EpochTime
select cast(datediff(second,'1970-01-01',getdate()) as bigint) as epoch
C# Ortamında;
public long Date2EpochTime(DateTime dt)
{
DateTime epochDateTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
TimeSpan timeSpan = dt-epochDateTime;
return (long)timeSpan.TotalSeconds;
}
public DateTime EpochTime2Date(long epochValue)
{
DateTime dt = new DateTime();
return dt.AddSeconds(epochValue);
}
Hiç yorum yok:
Yorum Gönder