2017-09-04 1 views
-1

저는 MySQL 및 phpMyAdmin을 사용하여 작업하고 있습니다. 내 DB에 '날짜'필드가 있고 각 레코드/행의 '날짜'필드에 날짜 이후 경과 일수를 계산하고 표시하는 MySQL_db 필드를 만들어야합니다.저장된 날짜 필드를 사용하여 전달 된 일 수를 계산하는 필드를 계산했습니다.

PHP로 코드를 생성 할 수있는 능력이 없습니다.

MySQL에서이 계산을 표시 할 수있는 필드를 만들 수있는 방법이 있습니까?

+0

계산 된 입력란을 추가하기위한 ALTER TABLE 일 뿐이니? –

+0

아마도 내가 분명히해야합니다. 내가 묻는 것은 MySQL 테이블에 필드를 생성하는 방법이며, 동일한 테이블 레코드/행에있는 기존 DATE 필드의 일수를 계산합니까? –

+0

PHP 태그가 왜 필요합니까? – Strawberry

답변

0

현재 (미래에 당신을 위해 유용 할 수 있습니다 MySQL은 및 기타 기능)을 CURDATE()DATEDIFF() 기능에 대해 읽고 싶은 있습니다 https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_datediff

SELECT *, DATEDIFF(CURDATE(), mydatefield) AS days_since 
FROM MyTable; 

이 테이블에 내장합니다 , 당신은 VIEW 사용할 수 있습니다

CREATE VIEW MyView AS 
    SELECT *, DATEDIFF(CURDATE(), mydatefield) AS days_since 
    FROM MyTable; 

의 MySQL 5.7는 식을 기반으로 가상 열을 추가 할 수 있습니다 generated columns 지원을하지만, 비 결정적를 사용하기 때문에이이 경우에 작동하지 않습니다 그러한 표현식에서는 CURDATE()와 같은 함수를 사용할 수 없습니다.

ALTER TABLE MyTable ADD COLUMN days_since INT AS (DATEDIFF(CURDATE(), mydatefield)); 
ERROR 3102 (HY000): Expression of generated column 'days_since' contains a disallowed function. 
+0

응용 프로그램 (PhP) 코드를 변경할 수있는 경우이 함수를 만들기 위해 DATEDIFF()를 사용할 수 있음을 알고 있습니다. 나는 할 수 없다. 나의 유일한 의지는 문제의 '날짜'에서 '일수'를 MySQL 테이블에서 바로 가져 오는 것입니다. 그게 가능하지 않으면 나에게 다른 옵션을 사용할 수 없습니다. –

+0

나는 왜 그 견해가 당신의 필요를 충족시키지 못하는지 이해하지 못한다고 생각합니다. –

관련 문제