2008-11-21 8 views
1

J'essaie d'extraire des informations d'une base de données MySQL dans une base de données MS SQL. La base de données est un désordre et le développeur n'est plus disponible.MySQL: Comment demander une date plus grande qu'aujourd'hui lorsqu'une date est dans une chaîne

Toutes les dates sont dans les champs de char, et je l'utilise

SELECT concat(mid(DueDate, 7, 4), mid(DueDate, 4, 2), mid(DueDate, 1, 2)) as DueDate FROM TableName 

pour obtenir le champ de date dans un format si serveur MS SQL peut les importer.

Maintenant, je veux exporter uniquement l'enregistrement à la date supérieure à aujourd'hui, donc les questions sont:

  • Quel est l'équivalent de GetDate() dans MySQL?
  • Existe-t-il un meilleur moyen de lancer la date pour faire la comparaison?

Répondre

11

En MySQL, vous pouvez convertir une chaîne en une date en utilisant la fonction STR_TO_DATE.

Un exemple d'utilisation est:

mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y'); 
     -> '2004-04-31' 

Pour obtenir la date actuelle dans MySQL il suffit d'utiliser la fonction NOW(). Vous pouvez ensuite vérifier si une date parser est plus tard aujourd'hui en utilisant quelque chose comme

WHERE STR_TO_DATE('04/31/2009', '%m/%d/%Y') > NOW() 
+0

et vous savez l'équivalent de GetDate() dans MySQL ? Puis-je utiliser> = opérateur? –

+0

J'ai mis à jour ma réponse avec la réponse –

1

MySQL équivalent à getDate() est CURDATE()

 

mysql> select IF(CURDATE()<NOW(), 1, 0); 
+---------------------------+ 
| IF(CURDATE()<NOW(), 1, 0) | 
+---------------------------+ 
|       1 | 
+---------------------------+ 
1 row in set (0.00 sec) 

mysql> select IF(CURDATE()=NOW(), 1, 0);                   +---------------------------+ 
| IF(CURDATE()=NOW(), 1, 0) | 
+---------------------------+ 
|       0 | 
+---------------------------+ 
1 row in set (0.00 sec) 

Questions connexes