Aşağıdaki fonksiyonlar Logo standart tarih ve zaman fonksiyonlarıdır :
LG_INTTODATE
Sayısal değeri tarihi biçimine çevirir.
Kod: Tümünü seç
CREATE FUNCTION [dbo].[LG_INTTODATE](@LDATE INT)
RETURNS DATETIME
AS
BEGIN
DECLARE @DATE DATETIME,
@DD INT,
@MM INT,
@YYYY INT,
@DATESTR VARCHAR(12)
SELECT @DD = ((@LDATE%65536)/256)
SELECT @MM = (@LDATE%65536)%256
SELECT @YYYY = (@LDATE/65536)
SELECT @DATESTR = CAST(@DD AS VARCHAR(2))+'-'+
CAST(@MM AS VARCHAR(2))+'-'+
CAST(@YYYY AS VARCHAR(4))
SELECT @DATE = CONVERT(DATETIME,@DATESTR,102)
RETURN(@DATE)
END
SELECT dbo.LG_INTTODATE('132580630')
Sonuç : 2023-05-22 00:00:00.000
LG_INTTOTIME
Sayısal değeri zaman biçimine çevirir.
Kod: Tümünü seç
CREATE FUNCTION [dbo].[LG_INTTOTIME](@LDATE INT)
RETURNS VARCHAR(12)
AS
BEGIN
DECLARE @TIME DATETIME,
@HH INT,
@MM INT,
@SS INT,
@TIMESTR VARCHAR(12),
@RETSTR VARCHAR(12)
SELECT @HH = (@LDATE-(@LDATE%65536))/65536/256
SELECT @MM = ((@LDATE-(@LDATE%65536))/65536-((@LDATE-(@LDATE%65536))/65536/256)*256)
SELECT @SS = (((@LDATE%65536)-((@LDATE%65536)%256))/256)
SELECT @TIMESTR = CAST(@HH AS VARCHAR(2))+':'+
CAST(@MM AS VARCHAR(2))+':'+
CAST(@SS AS VARCHAR(2))
SELECT @TIME = CONVERT(DATETIME,@TIMESTR,101)
SELECT @RETSTR = CONVERT(VARCHAR,@TIME,108)
RETURN(@RETSTR)
END
SELECT dbo.LG_INTTOTIME('235933709')
Sonuç : 14:16:16
LG_TIMETOINT
Zaman değerini sayısal zaman biçimine çevirir.
Kod: Tümünü seç
CREATE FUNCTION [dbo].[LG_TIMETOINT](@HH INT,@MM INT,@SS INT)
RETURNS INT
AS
BEGIN
DECLARE @TIME INT
SELECT @TIME = (@HH*65536*256+@MM*65536+@SS*256)
RETURN(@TIME)
END
SELECT dbo.LG_TIMETOINT('10','15','28')
Sonuç : 168762368
Aşağıdaki fonksiyonu da ek olarak geliştirdim :LG_DATETOINT
Tarih değerini sayısal tarih biçimine çevirir.
Kod: Tümünü seç
CREATE FUNCTION [dbo].[LG_DATETOINT](@LDATE DATE)
RETURNS INT
AS
BEGIN
DECLARE @INTDATE INT,
@DD INT,
@MM INT,
@YYYY INT
SELECT @DD = DAY(@LDATE)*1
SELECT @MM = MONTH(@LDATE)*256
SELECT @YYYY = YEAR(@LDATE)*65536
SELECT @INTDATE = @DD+@MM+@YYYY
RETURN(@INTDATE)
END
SELECT dbo.LG_DATETOINT('2023-05-23')
Sonuç : 132580631