Merhaba,
Excell yazdı:
Excel hesaplamalarda kullanılabilmeleri için tarihleri sıralı seri numaraları olarak saklamaktadır. Varsayılan olarak, 1 Ocak 1900'ün seri numarası 1'dir, bundan dolayı 1 Ocak 1900'den 39.448 gün sonra olması nedeniyle 1 Ocak 2008'in sayısı 39448'dir. Macintosh için Excel varsayılan olarak farklı bir tarih sistemi kullanmaktadır.
Delphi Help yazdı:
Following are some examples of TDateTime values and their corresponding dates and times:
0 12/30/1899 12:00 am
2.75 1/1/1900 6:00 pm
-1.25 12/29/1899 6:00 am
35065 1/1/1996 12:00 am
Excell den ve delphi den 38675 değerini verince 19.11.2005 tarihini veriyor. Ama mssql de 21.11.2005 tarihini veriyor.
Excell de 0 rakamını girip başka bir alanı date yaptığınızda 00.01.1900
1 girince 01.01.1900 veriyor.
Delphide
Kod: Tümünü seç
procedure TForm1.Button2Click(Sender: TObject);
var
tarih:tdate;
begin
tarih:=0;
showmessage(datetostr(tarih));
end;
tarih 0 için 30.12.1899
1 için 31.12.1899
2 için 01.01.1900 değerini veriyor.
Bence excell 1 01.01.1900 ile başlar dediği halde delphideki gibi davranıyor.
mssql ise excell in yalancısı olup tarihi 1->01.01.1900 olarak alıyor.
O yüzden 2 gün fazla söylemiş oluyor.
Bu durumda bence siz çevirirken
Kod: Tümünü seç
SELECT CONVERT(char(12), cast(Tarih-2 as datetime) , 103) FROM ...
şeklinde yapın.
Ama Getdate() fonksiyonunda öyle yapmıyor. Delphi ve Excell'deki gibi yapıyor.
Umarım başınızı ağrıtmamışımdır.
Kolay gelsin.