Tengo una tabla con estos campos.
CREATE TABLE IF NOT EXISTS `alerta` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `iddoc` int(11) NOT NULL,
 `ot` varchar(10) NOT NULL,
 `estado` int(2) NOT NULL,
 `usuario` int(2) NOT NULL,
 `observacion` varchar(100) NOT NULL,
 `fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`)
) 
en mis paginas seteo la fecha en mi caso a bogota
date_default_timezone_set('America/Bogota');
hago la actualización a la tabla que necesito e inserto en mi tabla de control
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
 $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
 $insertSQL = sprintf("INSERT INTO alerta (iddoc,ot, estado, usuario, observacion,fecha) VALUES (%s, %s, %s, %s, %s,%s)",
 GetSQLValueString($_POST['id'], "text"),
 GetSQLValueString($_POST['ot'], "text"),
 GetSQLValueString($_POST['estado'], "int"),
 GetSQLValueString($_POST['usuario'], "int"),
 GetSQLValueString($_POST['Observacion'], "text"));
GetSQLValueString($_POST['fecha'], "date"));
 mysql_select_db($database_sico, $sico);
 $Result1 = mysql_query($insertSQL, $sico) or die(mysql_error());
 }
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form2")) {
 $updateSQL = sprintf("UPDATE documentos SET estado=%s WHERE id= %s",
 GetSQLValueString($_POST['estado'], "int"),
 GetSQLValueString($_POST['id'], "int"));
mysql_select_db($database_sico, $sico);
 $Result1 = mysql_query($updateSQL, $sico) or die(mysql_error());
$updateGoTo = "consecutivo_gen.php";
 if (isset($_SERVER['QUERY_STRING'])) {
 $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
 $updateGoTo .= $_SERVER['QUERY_STRING'];
 }
 header(sprintf("Location: %s", $updateGoTo));
}