25

Starting with : 2011-01-17 09:30:00

Let's say I want to edit just the date with 2011-01-28

What is the most efficient way to end up with: 2011-01-28 09:30:00

Thanks!

For everyone saying Date_Add... that would require me to subtract the dates, then add the days. Thats a possibility... but was looking to remove that first step, and just "replace" the date

Michael
  • 1,816
  • 7
  • 21
  • 35

7 Answers7

68

If you really don't want to use date_add function, you can consider using this construction:

UPDATE table_name SET field_name = concat('2011-01-12 ', time(field_name)) 

Make sure to add a space after the date ('2011-01-12').

Mohammed H
  • 6,880
  • 16
  • 81
  • 127
itsmeee
  • 1,627
  • 11
  • 12
18

To change it 5 days ahead:

UPDATE yourTableName
SET myDate1 = myDate1 + INTERVAL 5 DAY
WHERE myDate1 = dateIWantToChange

(you can use MONTH, YEAR, etc too)

Raj More
  • 47,048
  • 33
  • 131
  • 198
rownage
  • 2,392
  • 3
  • 22
  • 31
  • 1
    For some reason, my answer wouldn't submit when i had the word "update" above spelled correctly. Weird. – rownage Jan 14 '11 at 19:59
3

Probably, DATE_ADD is a good idea. link text

Paul
  • 2,972
  • 2
  • 21
  • 16
2

Check Query

 update yourtable set eventtime=replace(eventtime,substr(eventtime,1,10), '2013-07-17')  WHERE  `id`=4
Aman Kumar
  • 4,533
  • 3
  • 18
  • 40
1

You can add various components of a date to modify it using the Date_Add function. Check this out:

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

Raj More
  • 47,048
  • 33
  • 131
  • 198
1

Going to use something like:

CONCAT('2011-01-28 ',DATE_FORMAT(original_timestamp, '%H:%i:%s'))
Aman Kumar
  • 4,533
  • 3
  • 18
  • 40
Michael
  • 1,816
  • 7
  • 21
  • 35
0

Just Use:

UPDATE table_name set column_name= DATE_FORMAT(column_name,'%Y-%m-28 %H:%i-%s');