Dun*_*unc 27
如果您对1970年之前的日期或毫秒级精度没有打扰,那么只需:
-- SQL Server
SELECT DATEDIFF(s, '1970-01-01 00:00:00', DateField)
Run Code Online (Sandbox Code Playgroud)
几乎和MySQL的内置函数一样简单:
-- MySQL
SELECT UNIX_TIMESTAMP(DateField);
Run Code Online (Sandbox Code Playgroud)
其他语言(Oracle,PostgreSQL等):如何获取当前的纪元时间(Unix时间戳)
rko*_*egi 19
试试这篇文章:http: //skinn3r.wordpress.com/2009/01/26/t-sql-datetime-to-unix-timestamp/
CREATE FUNCTION UNIX_TIMESTAMP (
@ctimestamp datetime
)
RETURNS integer
AS
BEGIN
/* Function body */
declare @return integer
SELECT @return = DATEDIFF(SECOND,{d '1970-01-01'}, @ctimestamp)
return @return
END
Run Code Online (Sandbox Code Playgroud)
或者这篇文章:
代码如下:
CREATE FUNCTION dbo.DTtoUnixTS
(
@dt DATETIME
)
RETURNS BIGINT
AS
BEGIN
DECLARE @diff BIGINT
IF @dt >= '20380119'
BEGIN
SET @diff = CONVERT(BIGINT, DATEDIFF(S, '19700101', '20380119'))
+ CONVERT(BIGINT, DATEDIFF(S, '20380119', @dt))
END
ELSE
SET @diff = DATEDIFF(S, '19700101', @dt)
RETURN @diff
END
Run Code Online (Sandbox Code Playgroud)
样品用法:
SELECT dbo.DTtoUnixTS(GETDATE())
-- or
SELECT UnixTimestamp = dbo.DTtoUnixTS(someColumn)
FROM someTable
Run Code Online (Sandbox Code Playgroud)
Sql Server 2016 及更高版本有一个 DATEDIFF_BIG 函数,可用于获取毫秒。
SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', GETUTCDATE())
Run Code Online (Sandbox Code Playgroud)
创建函数
CREATE FUNCTION UNIX_TIMESTAMP()
RETURNS BIGINT
AS
BEGIN
RETURN DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', GETUTCDATE())
END
Run Code Online (Sandbox Code Playgroud)
并执行它
SELECT dbo.UNIX_TIMESTAMP()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
57852 次 |
最近记录: |