반응형
MariaDB/MySql의 가상(계산) 컬럼에서 UNIX_TIMESTamp 사용
타임스탬프 컬럼과 같은 시간의 타임스탬프를 사용하여 행을 그룹화하기 위한 도우미 키를 유지하는 가상(계산된) 컬럼을 사용하여 테이블을 작성하려고 합니다.이를 위해 MariaDB/MySql에서 다음 명령을 사용합니다.
CREATE TABLE mytable(t TIMESTAMP, u INT AS (UNIX_TIMESTAMP(t) DIV 3600);
그러면 다음 오류가 반환됩니다.
ERROR 1901 (HY000): Function or expression is not allowed for column 'u'
설명서에 따르면 이 방법이 작동하지 않는 이유를 알 수 없습니다.좋은 생각 있어요?
대체...
(UNIX_TIMESTAMP(t) DIV 3600)
...이걸로...
(TIMESTAMPDIFF(HOUR,'1970-01-01 00:00:00',t))
MariaDB 10.1.14에서 확인되었습니다.이후 버전에서는 동작합니다.
부터1970-01-01 00:00:00
이0
에UNIX_TIMESTAMP()
,그리고.DIV 3600
정수 나눗셈의 경우, 당신의 표현은 다음과 같습니다.FLOOR()
1970-01-01 00:00:00 이후 시간 및TIMESTAMPDIFF()
는 같은 값을 제공하는 것 같습니다.
MariaDB에서UNIX_TIMESTAMP()
비논리적이기 때문에 인수가 제공되면 올바르지 않습니다.MySQL 코어에는 내장 함수를 "결정론적인" 것으로 간주하는 기능이 없거나 버그일 수 있습니다.
하지만 난 네가 이 문제를 해결할 수 있을 것 같습니다TIMESTAMPDIFF()
.
주의: 또, 다음과 같은 것이 필요한 것 같습니다.PERSISTENT
키워드. 그렇지 않으면 값이 저장되지 않기 때문에 가상 열을 인덱싱할 수 없습니다.
ERROR 1901: Key/Index cannot be defined on a non-stored computed column
언급URL : https://stackoverflow.com/questions/43167009/using-unix-timestamp-in-a-virtual-calculate-column-in-mariadb-mysql
반응형
'it-source' 카테고리의 다른 글
(pymysql.err).OperationError) (2013, '쿼리 중 MySQL 서버에 대한 연결 끊김') (0) | 2022.10.20 |
---|---|
javascript에서는 nl2br()에 상당합니다. (0) | 2022.10.20 |
완전한 mysql mysqldump 파일에서 단일 테이블을 복원할 수 있습니까? (0) | 2022.10.20 |
"198.1994.Out Of Memory Error : 새 네이티브 스레드를 만들 수 없습니다." (0) | 2022.10.20 |
PHP에서 실시간 출력으로 프로세스 실행 (0) | 2022.10.20 |