create function [dbo].[HtoSec](@lvalue as int)
RETURNS
int
BEGIN
DECLARE @temp int
Set @temp = @lvalue * 60 * 60
RETURN
@temp
END
create function [dbo].[GetTime](@dtmValue as datetime)
DECLARE @GMT_TIMEZONE int
SET
@GMT_TIMEZONE = 8
Set @temp = DateDiff(s, cast(‘1970-01-01 00:00:00‘ as
datetime), @dtmValue) - dbo.HToSEC(@GMT_TIMEZONE)
create function [dbo].[GetIntDate](@intValue as int)
datetime
DECLARE @temp datetime
Set @temp = DateAdd(s, @intValue +
dbo.HToSEC(@GMT_TIMEZONE), cast(‘1970-01-01 00:00:00‘ as datetime))
另外:
在sql中将時間戳轉換為時間類型
SQL裡面有個DATEADD的函數。時間戳就是一個從1970-01-01
08:00:00到時間的相隔的秒數。是以隻要把這個時間戳加上1970-01-01 08:00:00這個時間就可以得到你想要的時間了select
DATEADD(second,1268738429 + 8 * 60 * 60,‘1970-01-01 00:00:00‘)
注解:中原標準時間與GMT時間關系
1.GMT是中央時區,北京在東8區,相差8個小時
2.是以中原標準時間 =
GMT時間 + 八小時
例如:
SELECT DATEADD(S,1160701488 + 8 *
3600,‘1970-01-01
00:00:00‘)
--時間戳轉換成普通時間
SELECT DATEDIFF(S,‘1970-01-01
00:00:00‘, ‘2006-10-13 09:04:48.000‘) - 8 *
3600 --普通時間轉換成時間戳
****這個語句在sql2000中就能運作,在sql2005中運作總是提示錯誤?為什麼?
oracle中時間戳的算法
擷取時間戳:
create or replace function getTimeStamp return integer is
Result
integer;
begin
SELECT (SYSDATE - TO_DATE(‘1970-1-1 8‘, ‘YYYY-MM-DD
HH24miss‘)) * 86400000
+ EXTRACT(SECOND FROM
SYSTIMESTAMP(3)) * 1000
into result FROM DUAL;
return(Result);
end getTimeStamp;
時間戳變化為日期格式:
create or replace function getDateFromTimeStamp(tsp in integer) return date
is
Result date;
tt
tt := substr(tsp, 0, 13);
SELECT ((tt -
EXTRACT(SECOND FROM SYSTIMESTAMP(3)) * 1000) / 86400000
+
TO_DATE(‘1970-1-1 8‘,
‘YYYY-MM-DD HH24miss‘))
into result
FROM DUAL;
end getDateFromTimeStamp;