Campos Data e Hora para Campo DataTime

Senhores,

Estou com um probleminha que é simples mas não sei como resolver.

Tenho numa tabela campos separados para Data e Hora, e preciso jogar esses valores para outra tabela onde o campo é unificado DateTime.

Como fazer isso ?
Tem como fazer isso com alguma função do MySQL, ou tem que converter tudo para string e depois re-converter para datetime via PHP ?

Você pode unir os campos em uma variável, separar cada item com substring e depois atualizar essa tabela com o valor da variável, exemplo:
{campodata} = “20151231”;
{campohor} = “130720”;
$data_hora = subst({campodata},0,4)."-".substr({campodata},5,2)."-".substr({campodata},7,2)." “.substr({campohora},0,2).”:".substr({campohora},2,2).":".substr({campohora},4,2);

ficando aaaa-mm-dd hh:mm:ss

Aí basta fazer o update por essa variável.

Rodrigro,

Mas no seu exemplo você partiu de dois campos baseados em strings, e eu tenho dois campos do banco de dados, um Date e outro Time, não tem como trabalhar diretamente com eles ? Ou não tem jeiro, vou ter que converter para string para depois juntar e jogar no banco novamente ?

Feliz 2016!

Faz em um blank, recupera em variável depois da um insert com looping … Conforme informações acima.

Feliz ano novo!!

Meus Caros,

Eu continuo com dificuldade de fazer isso que eu preciso. :frowning:

Vou repetir a explicação:

Eu tenho numa tabela do banco de dados (MySQL) dois campos separados, um chamado Data do tipo Date e outro chamado Hora do tipo Time.

Eu preciso unificar esses dois campos numa outra tabela num outro campo chamado DataHora do tipo DateTime.

Não estou conseguindo tratar esses dois campos separados para montar uma nova string com a junção dos dois e então inserir na nova tabela.

Deve ser algo simples, mas eu não estou sabendo como fazer isso, por favor alguém me ajude.

Agradeço antecipadamente a atenção.

use o concate do mysql.

Haroldo,

Eu preciso trabalhar com os campos que estão num formulário do SC, na hora de salvar o formulário é que preciso juntar esses dois campos e salvar o datetime numa outra tabela.

ja tentou na onbeforeinsert:

{campo_datetime}={campo_date}." ".{campo_time};

//atente-se ao formato interno dos campos.

Tentei isso, mas dá erro de dados inválidos no campo datetime .

Ronaldo,

Se tu deres um echo nos dois campos ({campo_date} e {campo_time}) o que te aparece?

Kleyber,

Null e Null. :frowning:

Será que isso aqui daria certo ???

$data = {EnvioData};
$timestamp = strtotime($data);
$ano = date('Y', $timestamp); 
$mes = date('m', $timestamp); 
$dia = date('d', $timestamp); 

    $hora = {EnvioHora};
$timestamp = strtotime($hora);
$hor = date('H', $timestamp); 
$min = date('i', $timestamp); 
$seg = date('s', $timestamp); 

$date = new DateTime();
$date->setDate($ano,$mes,$dia);
$date->setTime($hor,$min,$seg);
$datetime = $date->format("Y-m-d H:i:s");

E aí usaria essa variável $datetime no insert.

Eu testei pelo esquema acima, mas a data inserida não vai com a hora, fica zereada, por exemplo: “2016-01-28 00:00:00”.

Ronaldo,

Não entendi. Estes valores não estão no banco de dados? Se eles já existem em uma tabela, não deveria vir Null. Se tem valores, a sugestão do Haroldo vai dar certo, a de colocar:
{campo_datetime}={campo_date}." ".{campo_time};

mktime

(PHP 4, PHP 5, PHP 7)
mktime — Obtém um timestamp Unix para uma data

Descrição ¶

int mktime ([ int $hora [, int $minuto [, int $second [, int $mes [, int $dia [, int $ano [, int $is_dst ]]]]]]] )
Retorna o timestamp Unix correspondente para os argumentos dados. Este timestamp é um longo inteiro contendo o número de segundos entre a Era Unix (January 1 1970 00:00:00 GMT) e o tempo especificado.

Argumentos podem ser omitidos da direita para esquerda; quaisquer argumentos assim omitidos serão definidos para o valor atual de acordo com a data e a hora local.

Kelyber e Haroldo,

Não sei qual é a bronca, mas o fato é que a variável gerada com a data e a hora, acaba ficando somente a data sem a hora, seja qual for o metodo que eu usar, até mesmo o concat via sql eu tentei e não tem jeito, o mktime também, nada funciona, a variável acaba ficando apenas a data sem a hora. :frowning:

qual a versão do seu SC?

8.1 atualizado

http://infinitusweb.net.br/control_datetime_test

clicando em OK, exibe o formato interno (aquele que deve ser salvo no banco).

Campos Data, Hora, DataHora
Enventos ajax onchange em campos data e hora:
{DataHora}={Data}." ".{Hora};

Envento OnValidate:
{DataHora}={Data}." ".{Hora};

Evento Onload:
{DataHora}={Data}." ".{Hora};

echo "Formato Interno:
".{DataHora};

Formato interno do campo Data: AAAA-MM-DD
Formato interno do campo DataHora: AAAA-MM-DD HH:II:SS

Não sei o que pode estar errado, o fato é que não consigo juntar os dois campos que vem do banco e um só, talvez seja o tratamento dos dois campos antes de criar a variável concatenada. O pior é que isso está me trazendo problemas sérios, pois essa hora é fundamental no sistema para controle. :frowning: