‘Incorrect datetime value[…]’ quando uso o bindParam ou bindValue

Estou tentando inserir um cadastro no banco de dados da seguinte forma (PHP)

    $  sql = "INSERT INTO `tb_teste` (`estrutura`, `foto`, `data_cadastro`) VALUES (':estrutura', ':foto', ':data_cadastro')";      $  sql = $  this->db->prepare($  sql);      $  sql->bindParam(":estrutura", $  estrutura, PDO::PARAM_STR);     $  sql->bindParam(":foto", $  foto, PDO::PARAM_STR);     $  sql->bindParam(":data_cadastro", $  data_cadastro, PDO::PARAM_STR);      $  retorno = $  sql->execute(); 

Já tentei com bindValue, já tentei sem utilizar o último parametro PDO::PARAM_STR, já tentei converter para Timestamp, converti antes de mandar para o PHP (no jQuery), converti de várias formas diferentes no PHP e nada funcionou, continuo recebendo o erro:

Incorrect datetime value: ‘:data_cadastro’ for column ‘data_cadastro’ at row 1

A única coisa que eu fiz e inseriu no banco, foi isso:

$  sql = "INSERT INTO `tb_teste` (`estrutura`, `foto`, `data_cadastro`) VALUES (':estrutura', ':foto', '$  data_cadastro')";  $  sql = $  this->db->prepare($  sql);  $  sql->bindParam(":estrutura", $  estrutura, PDO::PARAM_STR); $  sql->bindParam(":foto", $  foto, PDO::PARAM_STR); 

colocando a variável da data direto na query não deu erro e inseriu a data no campo corretamente, porém os outros campos ficaram com o valor :estutura,:foto

OBS: valor exibido no var_dump($ data_cadastro):

C:\wamp64\www\TESTE\controllers\painel\testeController.php:57:string ‘1995-11-14 00:00:00’

Ou seja, quando tento utilizar o bindParam ou bindValue a inserção não funciona, mas se o valor é inserido na query, funciona corretamente.

Obrigado!