sql - SQL Server中的UNIX_TIMESTAMP

标签 sql sql-server sql-server-2008 unix-timestamp

我需要在SQL Server 2008中创建一个模仿mysql的UNIX_TIMESTAMP()的函数。

提前致谢 !

最佳答案

试试这个帖子:
https://web.archive.org/web/20141216081938/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

或这篇文章:

http://mysql.databases.aspfaq.com/how-do-i-convert-a-sql-server-datetime-value-to-a-unix-timestamp.html

代码如下:
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

用法示例:
SELECT dbo.DTtoUnixTS(GETDATE()) 
-- or 
SELECT UnixTimestamp = dbo.DTtoUnixTS(someColumn) 
    FROM someTable

关于sql - SQL Server中的UNIX_TIMESTAMP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8837225/

相关文章:

c# - 仅 SELECT 可视化查询生成器背后的逻辑是什么?

sql - 如何解决 SQL Server 错误 "An expression of non-boolean type specified in a context where a condition is expected, near ' GROUP'"

sql - 数据库关系多对多三向混淆

mysql - 如果表只包含外键,表可以自动填充吗?

sql - PostgreSQL SELECT 必须跨多行匹配

c# - 在 C# 中使用选择计数 (*)

sql-server - 使用 SSIS 复制大量超大型数据库的最佳实践

sql - SQL Server 2008中的函数类似于mysql中的GREATEST?

c# - 为什么 SqlCommand 不在 HASHBYTES 函数中传递参数?

mysql - 将具有 GROUP BY 的 MySQL 查询转换为 SQL 查询