Description : In this function how to convert a datetime to ticks in sql function and ticks to DateTime
Below function for Convert DateTime to Ticks
CREATE FUNCTION dbo.ConvertDateTimeToTicks (@DateTime datetime)
RETURNS bigint
AS
BEGIN
RETURN DATEDIFF_BIG( microsecond, '00010101', @DateTime ) * 10 +
(DATEPART( NANOSECOND, @DateTime ) % 1000) / 100;
END
Call function
SELECT dbo.ConvertDateTimeToTicks('2018-02-26 14:05:24.250')
Result : 636552507242500000
Below function for convert ticks to datetime
CREATE FUNCTION dbo.ConvertTicksToDateTime ( @Ticks bigint )
RETURNS datetime
AS
BEGIN
DECLARE @DateTime datetime2 = '00010101';
SET @DateTime = DATEADD( DAY, @Ticks / 864000000000, @DateTime );
SET @DateTime = DATEADD( SECOND, ( @Ticks % 864000000000) / 10000000, @DateTime );
RETURN DATEADD( NANOSECOND, ( @Ticks % 10000000 ) * 100, @DateTime );
END
SELECT dbo.ConvertDateTimeToTicks(636552507242500000)
Result : 2018-02-26 14:05:24.2500000
Below function for Convert DateTime to Ticks
CREATE FUNCTION dbo.ConvertDateTimeToTicks (@DateTime datetime)
RETURNS bigint
AS
BEGIN
RETURN DATEDIFF_BIG( microsecond, '00010101', @DateTime ) * 10 +
(DATEPART( NANOSECOND, @DateTime ) % 1000) / 100;
END
Call function
SELECT dbo.ConvertDateTimeToTicks('2018-02-26 14:05:24.250')
Result : 636552507242500000
Below function for convert ticks to datetime
CREATE FUNCTION dbo.ConvertTicksToDateTime ( @Ticks bigint )
RETURNS datetime
AS
BEGIN
DECLARE @DateTime datetime2 = '00010101';
SET @DateTime = DATEADD( DAY, @Ticks / 864000000000, @DateTime );
SET @DateTime = DATEADD( SECOND, ( @Ticks % 864000000000) / 10000000, @DateTime );
RETURN DATEADD( NANOSECOND, ( @Ticks % 10000000 ) * 100, @DateTime );
END
SELECT dbo.ConvertDateTimeToTicks(636552507242500000)
Result : 2018-02-26 14:05:24.2500000
Thanks,
ReplyDeleteChange SELECT dbo.ConvertDateTimeToTicks(636552507242500000)
to
SELECT dbo.ConvertTicksToDateTime(636552507242500000)