Détermination de la distance de l'heure d'été dans sql server
Je veux déterminer si l'heure d'été est active ou pas, mais dans une région différente à l'endroit où mon serveur est situé.
Mon problème est que je veux vérifier l'heure de Londres et mon serveur est au Canada; est-il possible de trouver l'heure d'un autre fuseau horaire?
reportez-vous en double (pas de réponse): stackoverflow.com/questions/6781121/.... La réponse courte est qu'il n'y a rien de construit en. Windows les processus de l'heure d'été à l'aide de "tables de recherche" stockées dans la base de registre qui ne sont normalement pas accessibles à partir de T-SQL.
Ces données à partir de la base de registre est le Microsoft Time Zone base de données Voir ici, et est accessible via la .Net
Je suppose que ce n'est pas aussi facile que je le pensais. Il s'agit de la source de données, mais il ya quelques problèmes. Voir stackoverflow.com/q/614600/634824
La plus grande question est, avez-vous vraiment le faire en SQL? Il est beaucoup plus facile de le faire dans le code de votre application.
Ces données à partir de la base de registre est le Microsoft Time Zone base de données Voir ici, et est accessible via la .Net
TimeZoneInfo
classe, qui peut être utilisé dans SQL Server par le biais de SQL CLR appels. Je vais poster une réponse dans les meilleurs délais avec un exemple de code.Je suppose que ce n'est pas aussi facile que je le pensais. Il s'agit de la source de données, mais il ya quelques problèmes. Voir stackoverflow.com/q/614600/634824
La plus grande question est, avez-vous vraiment le faire en SQL? Il est beaucoup plus facile de le faire dans le code de votre application.
OriginalL'auteur Rohit Vyas | 2013-04-26
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour déployer un tableau de l'heure d'été et regarder l'heure d'été pour la région que vous voulez. L'heure d'été publiés par différents organismes et actualisé périodiquement. Ce que vous devez comprendre, c'est que l'heure d'été ne peut pas être déterminée par un algorithme, il ne peut être regardé comme établi par les corps législatifs divers pour les différentes régions, et de fréquents changements. Par exemple voici la courant 2013 table d'heure d'été. Le maintien de votre application de l'heure d'été (look-up table actuelle serait une tâche périodique pour votre application.
Je m'en tiens à ma recommandation
Savez-vous où l'on peut obtenir de l'heure d'été de script SQL pour une année 2015?
Choses que changer arbitrairement nécessitent de l'entretien. C'est juste une question de qui fait l'entretien. Si vous pouvez trouver une source fiable, j'ai trouvé que l'importation régulièrement est le plus bas de l'option de maintenance autres que l'interrogation d'une source externe en temps réel. Ce n'est pas vraiment différent que de données de code postal.
OriginalL'auteur Remus Rusanu
La meilleure chose à faire serait d'utiliser l'un des les deux Temps de la Zone de bases de données.
Cependant, il semble que (selon cette question), il est difficile d'utiliser le Microsoft TimeZone base de données à partir de SQL Server, car la
TimeZoneInfo
classe est marquée avec un[HostProtection]
attribut avecMayLeakOnAbort
défini à true.Je crois qu'une solution possible serait d'utiliser NodaTime classes à la place. Ceux-ci devraient être accessibles à partir de SQL CLR, et de fournir l'accès à les deux bases de données.
Je vais essayer cela et mise à jour ici.
Mise à JOUR
Après des combats avec des restrictions de sécurité de SQL CLR, j'ai conclu que cette approche n'est pas possible actuellement.
Ma recommandation serait de faire le fuseau horaire de conversions à l'extérieur de la base de données, dans la logique de l'application.
OriginalL'auteur Matt Johnson
Voici un brut IsDST pour SQL Server...
Rendements 0 pour l'Heure Standard 8 Nov – 7 Mar et 1, Heure Avancée de l'8 Mar – Nov 7.
OriginalL'auteur Mike R
Sur Sql Server 2016:
Avec sys.time_zone_info maintenant vous pouvez interroger si un fuseau horaire est actuellement en heure d'été.
Ici vous avez un exemple du résultat
OriginalL'auteur bruno.bologna