Je cherche une fonction SQL Server efficace (dans mon cas 2005) pour convertir une valeur de temps unix en une date SQL Server, en utilisant l'heure locale (en particulier en tenant compte de l'heure d'été ajustements - à-dire non seulement l'ajout 01/01/1970 en secondes)Fonction SQL Server pour convertir l'heure Unix en datetime local
Répondre
SELECT DATEADD(second, @ts, {d '1970-01-01'}) as MSSQLdatetime
Une fois que vous avez la date, vous pouvez maintenant faire dateadd à la date en fonction de l'état DST pour la date de retour. Pour vérifier l'heure d'été, vous avez besoin d'une forme de fonction, exemple:
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
Vous avez besoin d'une fonction Simular à trouver quand l'heure d'été se termine, un coup d'oeil sur ce site pour plus d'informations: http://www.mssqltips.com/tip.asp?tip=1372
Heure locale, cela ne tient pas compte des ajustements d'été – Cruachan
J'ai édité la réponse pour inclure un exemple de fonction qui donnera vous informations sur DST et quand il commence. Vous pouvez ensuite utiliser un CAS dans votre instruction SQL pour ajouter les heures requises à la colonne de sortie. – Espo
mieux?
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. SQL Server convertir la chaîne en datetime
- 2. Convertir DateTime en DateTime qui fonctionne avec SQL Server?
- 3. SQL Convertir en GMT DateTime
- 4. Comment convertir datetime en timestamp unix en c?
- 5. Sql Server DATETIME format incorrrect
- 6. Comment convertir en datetime
- 7. Convertir UTC en Unix Timestamp
- 8. Conversion de datetime XML en datetime SQL
- 9. Comment convertir Varchar en Datetime?
- 10. Convertir Datetime.ToFileTime() en objet DateTime
- 11. Comment convertir DateTime en Date
- 12. MS SQL: convertir la colonne Datetime en nvarchar
- 13. Remote tar.gz avec SQL Server local exécuter
- 14. Quelle est la fonction utilisée dans Sql Server 2005 pour obtenir le datetime actuel dans utc?
- 15. Convertir l'horodatage en datetime en erlang
- 16. manipulation DateTime dans SQL Server EXECUTE sp_executesql
- 17. Comment faire pour convertir la valeur de type XML SQL Server (xsi: nil) de DateTime en null
- 18. ACCESS Jet SQL INT() Fonction -> Fonction SQL Server
- 19. Sélection par champ datetime dans SQL Server
- 20. Insertion de DateTime dans Sql Server 2005
- 21. Comment faire pour convertir en DateTime sur HTML.Textbox?
- 22. MS SQL Server COLUMNS_UPDATED() Fonction
- 23. comment convertir la chaîne en datetime
- 24. comment convertir un pretime en .net datetime
- 25. Dans Sql Server, comment convertir des chaînes binaires en binaire?
- 26. T-SQL: Convertir datatime2 en datetime pour toutes les colonnes de type datetime2
- 27. Sql Ansi pour gérer les valeurs DateTime
- 28. Convertir SQL Server signé int en binaire (4)
- 29. Convertir varchar à uniqueIdentifier dans SQL Server
- 30. Persistance d'une colonne datetime calculée dans SQL Server 2005
Veuillez utiliser "SQL Server" pour désigner le produit et le serveur SQL dans le tag. Évite la confusion avec "MySql", et MSSQL n'existe pas. –
Il n'y a peut-être pas un tel produit, techniquement, mais c'est une abréviation très utilisée et vous nagez à contre-courant là-bas. Une recherche sur Google renvoie neuf millions et demi de hits, dont le premier est la page d'accueil du serveur Microsoft sql – Cruachan