2009-01-16 7 views
1

Je développe un système multi-base de données.
Je veux la différence entre deux dates en secondes.

Dans SQL Server j'ai obtenu:
DATEDIFF(second,stardate,enddate)
En MySql:
TIME_TO_SEC(TIMEDIFF(stardate,enddate))

Ma question: Est-ce que
Sql Ansi ont des fonctions pour gérer les valeurs DateTime?
i.e.: Il existe des fonctions datetime génériques pour toutes les bases de données?Sql Ansi pour gérer les valeurs DateTime

Répondre

2

Selon SQL: 1999, date1-date0 devrait vous donner une valeur de type INTERVALLE, un struct à partir de laquelle vous devriez être en mesure d'extraire année, mois, jour, etc.

Je ne l'ai jamais utilisé et je ne pense pas qu'il soit largement soutenu (même si je ne suis peut-être pas à jour). Si vous faites du calcul arithmétique dans la base de données et que vous voulez être compatible avec le SGBD, la solution habituelle consiste simplement à utiliser des horodatages entiers (quelle que soit la résolution, mais le temps Unix est commun) et un arithmétique entier -Plate-forme.

+0

Plus ou moins, d'où le upvote. Les valeurs INTERVAL (trouvées dans IBM Informix Dynamic Server pour un) peuvent appartenir à l'une des deux classes suivantes: YEAR TO MONTH ou DAY TO SECOND. En effet, vous pouvez avoir une ANNÉE D'INTERVALLE À ANNÉE, ou MOIS À MOIS, ou JOUR à MINUTE, ou HEURE À SECONDE, etc., y compris juste DEUXIÈME. –

Questions connexes