본문 바로가기
MySql

MySQL mysql만으로 datetime 필드의 날짜를 업데이트하는 방법

by 베이스 공부 2020. 12. 14.
반응형

이런 테이블이 있어요

| ID |         DATE              | DURATION |     STATUS | DUPLICATION |
|----|------------------- -------|----------|------------|-------------|
|  1 | January, 08 2014 19:30:12 | 00:00:03 |    Aborted |      (null) |
|  2 | January, 08 2014 19:30:12 | 00:00:06 |    Dropped |      (null) |
|  3 | January, 08 2014 05:25:11 | 00:00:20 |  Connected |    Multiple |
|  4 | January, 08 2014 05:19:21 | 00:00:21 |  Connected |      Repeat |
|  5 | January, 08 2014 05:12:56 | 00:00:20 |  Connected |      Unique |
|  6 | January, 08 2014 04:46:56 | 00:00:41 | Unanswered |    Multiple |
|  7 | January, 08 2014 04:42:56 | 00:00:35 | Unanswered |      Repeat |
|  8 | January, 08 2014 04:34:56 | 00:00:31 | Unanswered |      Unique |
|  9 | January, 09 2014 12:06:32 | 00:00:06 |    Dropped |      (null) |
| 10 | January, 09 2014 12:06:32 | 00:00:03 |    Aborted |      (null) |
| 11 | January, 09 2014 05:25:11 | 00:00:20 |  Connected |    Multiple |
| 12 | January, 09 2014 05:19:21 | 00:00:21 |  Connected |      Repeat |
| 13 | January, 09 2014 05:12:56 | 00:00:20 |  Connected |      Unique |
| 14 | January, 09 2014 04:46:56 | 00:00:41 | Unanswered |    Multiple |
| 15 | January, 09 2014 04:42:56 | 00:00:35 | Unanswered |      Repeat |
| 16 | January, 09 2014 04:34:56 | 00:00:31 | Unanswered |      Unique |
| 17 | January, 09 2014 12:19:01 | 00:00:20 |    Aborted |      (null) |
| 18 | January, 09 2014 12:19:01 | 00:00:19 |  Connected |      Repeat |
| 19 | January, 09 2014 12:15:30 | 00:00:20 |    Aborted |      (null) |
| 20 | January, 09 2014 12:15:30 | 00:00:19 |  Connected |      Unique |
| 21 | January, 09 2014 07:25:11 | 00:00:41 |  Connected |    Multiple |
| 22 | January, 09 2014 07:19:21 | 00:00:27 |  Connected |      Repeat |
| 23 | January, 09 2014 07:12:56 | 00:00:20 |  Connected |      Unique |
| 24 | January, 09 2014 06:46:56 | 00:00:32 | Unanswered |      Unique |
| 25 | January, 09 2014 06:42:56 | 00:00:29 |    Aborted |      (null) |
| 26 | January, 09 2014 06:34:56 | 00:00:27 |    Aborted |      (null) |
| 27 | January, 09 2014 05:34:56 | 00:00:27 |    Aborted |      (null) |
| 28 | January, 09 2014 05:25:11 | 00:00:41 |  Connected |    Multiple |
| 29 | January, 09 2014 05:19:21 | 00:00:27 |  Connected |      Repeat |
| 30 | January, 09 2014 05:12:56 | 00:00:20 |  Connected |      Unique |

날짜 만 업데이트하고 싶지만 어디서부터 시작해야할지 모르겠습니다. datetime 필드 date 에서 날짜 '2014-01-08'을 '2014-01-01'로 업데이트하고 싶습니다. 어떻게 할 수 있습니까? 나는 이것을 시도했다.

UPDATE calldate cd
INNER JOIN calldate cdl ON cdl.id = cd.id
SET cd.date = ''/*Dont know what to do here */
WHERE DATE(cd.date) = '2014-01-08'


 

해결 방법

 

한 가지 옵션은 다음을 사용하는 것입니다.

UPDATE `calldata`
SET `date` = DATE_SUB(`date`, INTERVAL 7 DAY)
WHERE DATE(`date`) = '2014-01-08'


DATE () 가 비교 연산자의 왼쪽에 없기 때문에 인덱스 (있는 경우)를 MySQL에서 사용할 수 있으므로 성능 향상을 위해 다음 쿼리를 사용하십시오.

UPDATE `calldata`
SET `date` = DATE_SUB(`date`, INTERVAL 7 DAY)
WHERE `date` >= '2014-01-08'
AND `date` < '2014-01-09


 

참조 페이지 https://stackoverflow.com/questions/21016662

 

 

반응형

댓글