9
votes

Mysql: date_sub / date_add qui représente le DST?

Ce retour 1 (AKA true ) xxx p> 100 jours, l'heure de la journée ne change pas. Mais en raison de l'heure d'épargne du jour (US), 100 périodes de vingt-quatre heures est en fait une heure plus tôt que si vous comptez par jour. Si la déclaration ci-dessus représentait DST, il retournerait 0 ou false .

est là une façon de pouvoir dire pour prendre en compte DST pour une donnée déclaration ou session? Je préférerais ne pas utiliser unix_timettamp car il coupe quelque chose de 2038 passé 2038.


4 commentaires

Cela pourrait aider Stackoverflow.com/Questtions/1646171/... (improbable a une cure dans MySQL)


Garçon! Do J'aimerais pouvoir écrire un type de données personnalisé cela fonctionne correctement!


Vous devrez vous écrire votre propre fonction Date_Sub qui prend en compte DST. BTW J'aimerais savoir étranger quiconque rêvait ce cauchemar DST.


Je ne peux pas attendre que les horodatages Unix 64 bits deviennent la normale. y293billionk ne sera tout simplement pas un problème ...


3 Réponses :


4
votes

Vous devrez créer une fonction personnalisée, quelque chose comme ça. XXX


0 commentaires

-2
votes

Comment couperait quelque chose de 2038 après 2038 être un vrai problème lorsque vous pouvez être sûr que les horodatages entier de 64 bits seront impressionnés partout 20 ans avant cela au moins?

Sérieusement, il y a tellement de problèmes avec les types DateTime / Timeestamp dans MySQL que vous devriez essayer de les éviter lorsque cela est possible.

stockez-vous de nombreuses dates au-delà de 2038?

Et pourquoi ne pas essayer d'utiliser PostgreSQL qui a un support de type beaucoup plus avancé?


1 commentaires

La limitation à 2038 ajoute une légère complexité. Par exemple, répéter des événements sur un calendrier. Évidemment, 2038 n'est pas un vrai problème, mais j'aime faire des choses de bonne façon, s'il y a une bonne façon. En ce qui concerne le 4ème paragraphe, nous sommes déjà sur MySQL, je ne pense pas qu'il y ait beaucoup de raisons de faire un changement aussi important.



4
votes

Il s'agit vraiment d'une question de convertir en UTC et à l'arrière: xxx

Ceci suppose que les tables de fuseau horaire configurées pour utiliser des fuseaux horaires nommés. Sinon, vous pouvez utiliser '+0: 00' au lieu de 'uc'


1 commentaires

Soyez prudent avec cette réponse, comme convert_tz ne fonctionne pas avec les dates plus anciennes que l'époque (y compris l'époque) ainsi que au-delà de 2038: Jira.Mariadb.org/Browse/MDEV-10135