반응형
필드가 과거일 때 SQL 업데이트 레코드
필드 F12의 날짜가 오늘보다 오래된 "field"=0의 모든 레코드를 설정하려면 어떻게 해야 합니까?
유감스럽게도 필드 F12는 DateTime 필드가 아니라 문자열입니다.안타깝게도, 저는 그것을 바꿀 수 없습니다.나는 먼저 문자열을 날짜로 변환해야 합니다.
유감스럽게도 이 코드는 작동하지 않습니다.
UPDATE 'mytable'
SET 'published' = '0'
WHERE STR_TO_DATE('F12', '%d.%m.%Y') DATEDIFF(day, 'F12', NOW()) >= 1
phpMyAdmin의 스크린샷은 다음과 같습니다.
당신의 지원과 최고의 안부에 매우 감사드립니다.
나는 다음과 같은 논리를 기대합니다.
update mytable
set published = 0
where STR_TO_DATE(F12, '%d.%m.%Y') < curdate();
단일 따옴표는 문자열 상수에만 사용됩니다.그것이 당신의 질문에 대한 문제일 수 있습니다.아니면 당신이 사용하고 있는 것일 수도 있습니다.now()시간 구성 요소가 있으므로 오늘 날짜의 값도 업데이트합니다.
이것은 정답이 아닙니다.가상 필드에 대한 샘플일 뿐입니다.
샘플 테이블 생성
CREATE TABLE `table1` (
`a` int(11) NOT NULL,
`F12` varchar(32) DEFAULT NULL,
`F12new` date AS (STR_TO_DATE(`F12`, '%d.%m.%Y')) PERSISTENT,
) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
견본의
MariaDB [bernd]> CREATE TABLE `table1` ( `a` int(11) NOT NULL, `F12` varchar(32) DEFAULT NULL, `F12new` date AS (STR_TO_DATE(`F12`, '%d.%m.%Y')) PERSISTENT ) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
Query OK, 0 rows affected (0.19 sec)
MariaDB [bernd]> insert into table1 (a,F12) VALUES (1,'1.2.2018');
Query OK, 1 row affected (0.02 sec)
MariaDB [bernd]> select * from table1;
+---+----------+------------+
| a | F12 | F12new |
+---+----------+------------+
| 1 | 1.2.2018 | 2018-02-01 |
+---+----------+------------+
1 row in set (0.01 sec)
MariaDB [bernd]> insert into table1 (a,F12) VALUES (1,'17.05.2029');
Query OK, 1 row affected (0.01 sec)
MariaDB [bernd]> select * from table1;
+---+------------+------------+
| a | F12 | F12new |
+---+------------+------------+
| 1 | 1.2.2018 | 2018-02-01 |
| 1 | 17.05.2029 | 2029-05-17 |
+---+------------+------------+
2 rows in set (0.00 sec)
MariaDB [bernd]>
이제 F12new에 인덱스만 설정합니다.
언급URL : https://stackoverflow.com/questions/66660973/sql-update-record-when-field-is-in-the-past
반응형
'programing' 카테고리의 다른 글
| Python의 CURL 대안 (0) | 2023.08.08 |
|---|---|
| 파일에 대한 Oracle 스풀의 최대 열 너비 (0) | 2023.08.08 |
| 패브릭을 통해 가상 환경을 배포 사용자로 활성화 (0) | 2023.08.08 |
| apt-get Oracle Java 7 설치가 중지 (0) | 2023.08.08 |
| 어떻게 글라이드를 사용하여 이미지를 비트맵으로 다운로드합니까? (0) | 2023.08.08 |
