2009-06-04 17 views
17

Quiero agregar 1 año a una columna de tipo de fecha y hora en cada fila de una tabla. Agregar usando una instrucción UPDATE es fácil para los tipos numéricos. por ejemplo:¿Cómo puedo usar una instrucción SQL UPDATE para agregar 1 año a una columna DATETIME?

UPDATE TABLE SET NUMBERCOLUMN = NUMBERCOLUMN + 1 

me gustaría hacer lo mismo con una de tipo DATETIME ...

UPDATE Procrastination SET DropDeadDueDate = DropDeadDueDate + ? 

... pero no estoy seguro de qué valor usar. ¿Hay algún valor numérico que pueda usar que signifique "1 año"? ¿O hay una función DATEADD o similar en SQL Server?

PREGUNTA ADICIONAL

me gustaría hacer esto por no un campo, pero por cada campo en la base de datos del tipo de datos 'fecha y hora'. ¿Existe una manera fácil de seleccionar todos los campos de tipo 'datetime' y realizar una actualización de agregar x cantidad de años? Soy nuevo a SQL así que por favor sea amable ...

+1

@shahkalpesh - Tal vez debería tener. No tengo dudas de que * podría * haber encontrado la respuesta yo solo. Pero dado que StackOverflow parece aspirar a ser un repositorio de todo el conocimiento de programación, y esta pregunta aún no se había formulado, pensé "¿por qué no?". –

+3

@Joshua, vea mi comentario a Kev en mi respuesta. Cuando veo tu pregunta, parece que ya respondiste eso en parte diciendo DATEADD. Si las personas hacen preguntas, podrían encontrarlas fácilmente en libros en línea, esto se convertirá en un intercambio de enlaces en lugar de problemas/soluciones reales, que no se pueden encontrar en MSDN/Books en línea/Internet. Solo mi opinión, nada personal. Paz :) – shahkalpesh

Respuesta

36

De hecho, hay una declaración DATEADD en T-SQL, puede encontrarlo here

UPDATE Procrastination SET DropDeadDueDate = DATEADD(yyyy,1,DropDeadDueDate) 

EDIT: Usted podría utilizar años, yy, o aaaa para el primer argumento de DATEADD.

+4

..y la competencia afortunada de "representante mecanógrafo más rápido fácil" de hoy es ... – gbn

+0

Quiero hacer lo mismo en phpmyadmin pero dice '# 1305 - FUNCTION [table_name] .ADD_DATE no existe' – someone

1

UPDATE Procrastination SET DropDeadDueDate =
DATEADD(yy, 1, DropDeadDueDate)

ref: http://doc.ddart.net/mssql/sql70/da-db_5.htm

+0

mientras el enlace es útil, ¿no habría sido más útil un enlace de MSDN más reciente en lugar de uno de SQL7? ¿La única razón por la que pregunto es por qué criticaste al OP por no investigar la respuesta por sí mismo? –

+0

@Kev: No estoy criticando :) Sí, el enlace es más antiguo, pero las cosas no han cambiado para esa función, hasta donde yo sé. Mi idea es que las preguntas/respuestas deben ser para cosas, una no sería fácil de encontrar en la documentación/MSDN.Espero que justifique mis comentarios. – shahkalpesh

3

La función DateAdd debe hacer lo que quiera.

UPDATE Procrastination SET DropDeadDueDate = DateAdd(yy, 1, DropDeadDueDate) 
8

que se podía hacer con una función DATEADD() así:

UPDATE Procrastination SET DropDeadDueDate = DATEADD(yy, 1, DropDeadDueDate) 
Cuestiones relacionadas