Comment faire pour modifier uniquement l'année d'un type de données de date
J'ai une liste d'anniversaires et de l'année est la seule partie qui est incorrect. J'ai une liste d'ID #s pour ces personnes. Est-il possible de changer uniquement l'année pour tous ces gens? Je pensais à quelque chose comme un tableau de résultats de la requête, puis à l'aide d'un UPDATE
SET
requête, mais je ne sais pas comment faire pour changer seulement l'année.
Échantillon inclus dans l'edit. Chaque année, doit être diminué par 2.
Sont-ils chacun par un certain nombre d'années? Si non, comment savez-vous ce que la nouvelle valeur est?
Pourquoi avez-vous l'état le format aaaa-mm-jj? Par hasard, est votre domaine stockées dans varchar?
Essayez cette requête:
Watch out pour le 29 Février, qui n'est valable que dans les années bissextiles
Alors, quelle est la bonne réponse dans ce cas? Si vous avez Févr. 29 2012 et de prendre deux années, SQL Server vous dit que est Févr. 28 2010. Bien sûr, Févr. 29 n'était pas valable les jours de l'année, alors, comment pouvez-vous faire confiance à la source de données et de votre présumé des corrections à ces données?
Pourquoi avez-vous l'état le format aaaa-mm-jj? Par hasard, est votre domaine stockées dans varchar?
Essayez cette requête:
UPDATE MyTable SET DOB = DATEADD(YEAR, -2, DOB)
Watch out pour le 29 Février, qui n'est valable que dans les années bissextiles
Alors, quelle est la bonne réponse dans ce cas? Si vous avez Févr. 29 2012 et de prendre deux années, SQL Server vous dit que est Févr. 28 2010. Bien sûr, Févr. 29 n'était pas valable les jours de l'année, alors, comment pouvez-vous faire confiance à la source de données et de votre présumé des corrections à ces données?
OriginalL'auteur wootscootinboogie | 2012-04-30
Vous devez vous connecter pour publier un commentaire.
Si toutes les lignes doivent être diminué en deux ans, puis:
Je n'ai pas d'idée, vous avez besoin de nous dire comment vous savez ce afin de corriger la date de chacun. Vous dites qu'il est incorrect, mais où est la source correcte?
Non, je n'ai pas dit que c'est incorrect, juste pour une petite précision sur le jargon 🙂 par exemple, src.id (est myTable.id)
Vous avez dit dans votre question:
I have a list of birthdays and the year is the only part that is incorrect.
OK, nous montrent quelques exemples nous montrent comment les corriger. Sont-ils tous les 5 ans, 10 ans, ou chaque ligne par un montant différent, et comment savez-vous quelle était la bonne année? NOUS MONTRER. Sans plus de détails, nous sommes juste en coup de poignard.Toutes mes excuses, mis à jour avec un graphique.
OriginalL'auteur Aaron Bertrand
Voici le plus court que je pense, changer la à l'horizon 2050:
Des données de l'échantillon:
De sortie:
Test en direct: http://www.sqlfiddle.com/#!3/9a8b4/2
C'est la demande, de modifier uniquement l'année
Si la base de données est juste un peu orientée objet, nous pouvons le faire:
UPDATE x SET d.Year = 2050
. Ne peuvent que rêver 🙂Mais le changement de chaque individu de jour par le même nombre d'années, de ne pas changer à chaque date de la même année. Et il n'est pas orienté objet, SQL Server.
Ok, je vois maintenant ce que vous dites, la question est édité maintenant. L'exigence exacte est modifiée question 🙂
OriginalL'auteur Michael Buen
Au cas où quelqu'un d'autre en a besoin pour MySQL, voici la syntaxe:
OriginalL'auteur Matt Welander