2017-04-19 12 views
0

私は自分のデータベースに日付を追加していますが、問題は一日遅れていることです。データがあまりにも敏感ではないので、単に日を追加するだけで動作します。私はSQL Serverをよく知っているわけではなく、UNIXのタイムスタンプに1日を追加する方法を探しています。SQL ServerのUNIXタイムスタンプに1日を追加するにはどうすればよいですか?

私は単に私のタイムスタンプに1日を追加したいと思います。たとえば、1492560000は昨日であり、今日は必要です。

ご協力いただきありがとうございます!

+5

それでは、60 * 60 * 24? –

+0

@AlexKと同意します。 ''日付選択(S、1492560000、 '1970-01-01')、日付追加(S、1492560000 +(60 * 60 * 24)、 '1970-01-01' – scsimon

答えて

1

コメントに記載されているように、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. 
関連する問題