2009-08-05 11 views
13

Vous souhaitez obtenir le datetime actuel à insérer dans la colonne lastModifiedTime. J'utilise la base de données MySQL. Mes questions sont:comment obtenir datetime actuel dans SQL?

  1. Y at-il une fonction disponible en SQL? ou

  2. dépend de l'implémentation, donc chaque base de données a sa propre fonction pour cela?

  3. Quelle est la fonction disponible dans MySQL?

+4

Ne serait-ce pas bien si ANSI-SQL exigeait que ces fonctions système de base soient nommées de manière cohérente sur toutes les plates-formes? Standardiser (sous-chaîne ou substr) ou (IsNull ou NVL). – Bill

Répondre

27

réponse complète:

1. Y at-il une fonction disponible dans SQL?
Oui, la spécification SQL 92, oct 97, p. 171, l'article 6.16 précise cette fonction:

CURRENT_TIME  Time of day at moment of evaluation 
CURRENT_DATE  Date at moment of evaluation 
CURRENT_TIMESTAMP Date & Time at moment of evaluation 

2. Il est la mise en œuvre de sorte que chaque base de données dépendu a sa propre fonction pour cela?
Chaque base de données a ses propres implémentations, mais ils doivent mettre en œuvre la fonction ci-dessus trois si elles sont conformes à la spécification SQL 92 (mais dépend de la version de la spécification)

3. Quelle est la fonction disponible dans MySQL?

NOW() returns 2009-08-05 15:13:00 
CURDATE() returns 2009-08-05 
CURTIME() returns 15:13:00 

(Comme dit SixFootTallRabbit)

1

Pour SQL Server, utilisez GetDate() ou current_timestamp. Vous pouvez formater le résultat avec Convert (dataType, value, format). Marquer votre question avec le bon serveur de base de données.

2

Je veux que mon datetime, et je veux now()!

Pour MySQL, de toute façon.

+1

C'est mignon ... Ne fonctionne pas avec Microsoft si: "Je veux ma date, et je le veux GetDate()!" –

+0

Bien sûr que oui. "Eh bien, monsieur, vous pouvez simplement vous-même GetDate() à partir de maintenant!" –

4

MAINTENANT() retourne 2009-08-05 15:13:00

CURDATE() retourne 05/08/2009

CURTIME() retourne 15:13:00

0
  1. GETDATE() ou GETUTCDATE() sont maintenant remplacés par les plus riches SYSDATETIME, SYSUTCDATETIME et SYSDATETIMEOFFSET (dans SQL 2008)
  2. Oui, je ne pense pas que ANSI ait jamais déclaré quoi que ce soit, et donc chaque fabricant a le sien.
  3. Ce serait MAINTENANT()

Hope this helps ...

Rob

1
SYSDATETIME() 2007-04-30 13:10:02.0474381 
SYSDATETIMEOFFSET()2007-04-30 13:10:02.0474381 -07:00 
SYSUTCDATETIME() 2007-04-30 20:10:02.0474381 
CURRENT_TIMESTAMP 2007-04-30 13:10:02.047 + 
GETDATE() 2007-04-30 13:10:02.047 
GETUTCDATE() 2007-04-30 20:10:02.047 

Je suppose que maintenant() ne fonctionne pas quelque temps et donne l'erreur NOW n'est pas un nom de fonction intégrée reconnue.

Espérons que ça aide !!! Je vous remercie. https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql

Questions connexes