2010-03-13 6 views
7

J'ai trois colonnes, y, m et d (année, mois et jour) et je souhaite stocker cette date.MYSQL: Comment définir une date (makedate?) Avec le mois, le jour et l'année

Quelle fonction est-ce que j'utiliserais sur mySQL pour faire ceci?

Apparemment, makedate utilise l'année et le jour de l'année (voir ci-dessous), mais j'ai un mois. Je sais que je peux utiliser STR_TO_DATE (str, format), en construisant la chaîne à partir de (y, m, d), mais je suppose qu'il existe un moyen plus simple de le faire.

RÉFÉRENCES

MAKEDATE(year,dayofyear)

Renvoie une date, année donnée et les valeurs au jour d'année. dayofyear doit être supérieur à 0 ou le résultat est NULL.

Répondre

8

Je crois que vous pouvez utiliser une chaîne dans le format approprié:

UPDATE table SET my_date = '2009-12-31'; 

Edit: Oui vous pouvez, juste en MySQL 5.1 vérifié.

5

Il est peu élevé sur la lisibilité, mais ce qui suit fonctionnerait:

SELECT'1900-01-01' + INTERVAL y-1900 YEAR + INTERVAL m-1 MONTH + INTERVAL d-1 
DAY FROM ... 

Pas sûr que ce plus efficace que l'utilisation CONCAT et STR_TO_DATE.

1

J'espère que cela wil fonctionne sur ..

str_to_date(concat(year(curdate()) , '-', month(a.dob) , '-', day(a.dob)) , '%Y-%m-%d') 

Où a.dob est le nom de ma colonne qui a DATE