2010-12-06 7 views
1

Je sais cela est évident, mais ma ligne de temps de date est le type de texte, et je ne peux pas comprendre comment récupérer des documents qui sont:Obtenir des enregistrements MySQL créés dans une plage de temps?

  • Inséré depuis une date jusqu'à présent

    - OU -

  • Inséré dans une journée spécifique

Certaines des tentatives infructueuses:

SELECT * FROM posts WHERE DATE(date)=DATE(NOW()) // To get today's posts 
SELECT * FROM posts WHERE date>=CURDATE() // Still doesn't work. 

P.S. La ligne de date est au format DateTime mais dans un type TEXT.

Merci

+3

Désolé pour la question évidente mais ... Quel est l'avantage de stocker les dates dans 'colonnes de Text'? –

+0

Pouvez-vous poster un échantillon de ce à quoi ressemble une date dans votre tableau? – grahamparks

+0

Si c'est possible/faisable, je les stockerais dans un format différent. Il est possible d'utiliser la réponse d'Álvaro pour le faire fonctionner, mais cela deviendra terriblement inefficace avec de grands ensembles de données. –

Répondre

2

La fonction pour analyser les chaînes en dates est STR_TO_DATE():

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date

Il suppose que le format est fixe et connu. Je ne sais pas si c'est le cas.

+0

Un simple 'nom de champ CAST AS DATE' devrait suffire. La question de savoir pourquoi ils sont stockés dans les champs TEXT est toujours valide si –

+1

@Pekka: Uniquement si les dates sont stockées dans un format pris en charge: AAAA-MM-JJ. Sinon, vous devez utiliser STR_TO_DATE ... –

+0

@OMG il dit 'La ligne date est dans un format DateTime mais dans un type TEXT. ' –

Questions connexes