Ich bin auf der Suche nach einer effizienten SQL Server-Funktion (in meinem Fall 2005), um einen Unix-Zeitwert in eine SQL Server Datetime zu konvertieren, mit lokaler Zeit (insbesondere unter Berücksichtigung der Sommerzeit Anpassung - gerade dh nicht 01.01.1970 in Sekunden) ZugabeSQL Server-Funktion zum Konvertieren von Unix-Zeit zu lokalen Datetime
Antwort
SELECT DATEADD(second, @ts, {d '1970-01-01'}) as MSSQLdatetime
Nachdem Sie das Datum haben, können Sie nun über den Zeitpunkt für das zurückgegebene Datum auf dem DST-Zustand abhängig machen dateadd. Um zu überprüfen, für DST müssen Sie irgendeine Form von Funktion, Beispiel:
CREATE function [dbo].[fn_GetDaylightSavingsTimeStart]
(@Year varchar(4))
RETURNS smalldatetime
as
begin
declare @DTSStartWeek smalldatetime, @DTSEndWeek smalldatetime
set @DTSStartWeek = '03/01/' + convert(varchar,@Year)
return case datepart(dw,@DTSStartWeek)
when 1 then
dateadd(hour,170,@DTSStartWeek)
when 2 then
dateadd(hour,314,@DTSStartWeek)
when 3 then
dateadd(hour,290,@DTSStartWeek)
when 4 then
dateadd(hour,266,@DTSStartWeek)
when 5 then
dateadd(hour,242,@DTSStartWeek)
when 6 then
dateadd(hour,218,@DTSStartWeek)
when 7 then
dateadd(hour,194,@DTSStartWeek)
end
end
Sie benötigen eine simular Funktion zu finden, wenn die Sommerzeit endet, werfen Sie einen Blick auf dieser Website für weitere Informationen: http://www.mssqltips.com/tip.asp?tip=1372
Lokale Zeit, dies berücksichtigt keine Sommerzeitanpassungen. – Cruachan
Ich habe die Antwort so bearbeitet, dass sie eine Beispielfunktion enthält Sie Informationen über die Sommerzeit und wann es beginnt. Sie können dann einen CASE in Ihrer SQL-Anweisung verwenden, um der Ausgabespalte die erforderlichen Stunden hinzuzufügen. – Espo
besser?
CREATE FUNCTION [dbo].[UnixTimestampToGMTDatetime]
(@UnixTimestamp bigint)
RETURNS datetime
AS
BEGIN
DECLARE @GMTDatetime datetime
select @GMTDatetime =
CASE
WHEN dateadd(ss, @UnixTimestamp/1000, '1970-01-01')
BETWEEN
Convert(DATETIME, Convert(VARCHAR(4), Year(dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))) + '-03-' + Convert(VARCHAR(2), (31 - (5 * Year(dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))/4 + 4) % 7)) + ' 01:00:00', 20)
AND
Convert(DATETIME, Convert(VARCHAR(4), Year(dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))) + '-10-' + Convert(VARCHAR(2), (31 - (5 * Year(dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))/4 + 1) % 7)) + ' 02:00:00', 20)
THEN Dateadd(hh, 1, dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))
ELSE Dateadd(hh, 0, dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))
END
RETURN @GMTDatetime
END
- 1. Konvertieren von UTC Datetime zu lokalem Datetime
- 2. Konvertieren einer Datetime in SQL
- 3. Konvertieren von DateTime zu TimeSpan
- 4. Konvertieren von DateTime nach DateTime, das mit SQL Server funktioniert?
- 5. Konvertieren von UTC Datetime Benutzer lokalen Datum und Uhrzeit
- 6. Konvertieren von Bigint zu Datetime-Wert
- 7. Format DateTime zu SQL
- 8. Konvertieren von lokalen Koordinaten zu globalen Koordinaten
- 9. SQL Server-Zeichenfolge in Datetime konvertieren
- 10. Die beste Methode zum Analysieren von DateTime zu SQL Server
- 11. Wie kann ich SQL Datetime richtig in C# Datetime konvertieren?
- 12. Konvertieren von Datetime.ToFileTime() zu DateTime-Objekt
- 13. konvertieren Datetime von Server zu Zeichenfolge Javascript
- 14. SQL konvertieren Datetime und subtrahieren Stunden
- 15. Konvertieren DateTime zu ISO 8601
- 16. Python konvertieren Zeichenfolge in Datetime zum Vergleich mit Datetime-Objekt
- 17. konvertieren xldate zu python datetime
- 18. MS SQL: Konvertieren Datetime-Spalte in Nvarchar
- 19. Wie Konvertieren DATETIME- zu CHAR in MS SQL
- 20. Wie zu Zeitrahmen zu Datetime konvertieren
- 21. Konvertieren von R POSIXlt in T-Sql datetime
- 22. Konvertieren von bestimmten BigInt in DateTime in T-SQL
- 23. Ormlite ordnet Datetime von SQL Server zu C# nicht zu?
- 24. Verwenden von SQL Server Datetime
- 25. Konvertieren von DateTime nach Double
- 26. Konvertieren von Ticks in DateTime
- 27. Konvertieren des DateTime-Formats von Excel in DateTime Pandas
- 28. Moment Konvertieren von Datetime falsch
- 29. Hinzufügen von Zeit zu DateTime in SQL
- 30. Konvertieren zu und von datetime fügt eine Stunde hinzu?
Verwenden Sie bitte "SQL Server", um auf das Produkt und den SQL-Server im Tag zu verweisen. Vermeidet Verwirrung mit "MySql", und MSSQL gibt es nicht. –
Es gibt vielleicht kein solches Produkt, aber es ist eine sehr häufig verwendete Abkürzung und Sie schwimmen dort gegen den Strom. Eine Suche auf Google gibt neuneinhalb Millionen Zugriffe zurück, von denen der erste die Microsoft SQL Server-Homepage ist. – Cruachan