如何在sql server中的UNIX时间戳中添加一天?

时间:2017-04-19 15:50:51

标签: sql sql-server unix timestamp

我在我的数据库中添加日期,但问题是它们落后了一天。数据不是太敏感,所以只需添加一天即可。我不熟悉SQL Server,并且已经搜索过试图找到如何在UNIX时间戳中添加一天。

我只想在我的时间戳上添加一天。例如:1492560000适用于昨天,需要今天使用。

任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:1)

如评论中所述,您可以添加60 * 60 * 24添加一天。如果您希望能够添加其他日期部分而不需要它,可以将unix时间戳转换为SQL,使用dateadd,然后将其转换回来。

declare @date datetime = getutcdate()
declare @unixstartdate datetime = '1970-01-01'
declare @unixdate int = datediff(second, @unixstartdate, @date)

--Add datepart to unix
select
    datediff(second, @unixstartdate, dateadd(/*date part you are adding*/day, /*number of dateparts to add*/1, dateadd(second, @unixdate, @unixstartdate)))

--Here's how we got there
select
    @unixdate AS [current_unix_date]
    ,dateadd(second, @unixdate, @unixstartdate) AS [sql_datetime]   --Convert the unix timestamp to a sql datetime.
    ,dateadd(day, 1, dateadd(second, @unixdate, @unixstartdate))    AS [updated_sql_datetime]   --Add your dayparts. Here we add 1 day.
    ,datediff(second, @unixstartdate, dateadd(day, 1, dateadd(second, @unixdate, @unixstartdate)))  --Convert the updated sql datetime back to unix.