Trigger BEFORE INSERT from date to datetime
It seems each time you are inserting data into both tables i.e. price_changes and prices. Reverse process may be helpful. 
If possible  try this :

DELIMITER ;;
CREATE TRIGGER `prices_changes_before_insert`
   BEFORE INSERT ON `prices_changes`
   FOR EACH ROW
   INSERT INTO `prices` (`id_product`, `date`, `value`) VALUES (NEW.`id_product`, NEW.`date`, NEW.`value`)
    ON DUPLICATE KEY UPDATE `value` = VALUES(`value`);;
DELIMITER ;


Then 

INSERT INTO `prices_changes` SET
   `id_product` = 3,
    `date` = "2016-08-12 14:50:00", # Is a DATETIME value
    `value` = "20.50";