Date en Time samenvoegen in 1 kolom

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rene Zwolsman

Rene Zwolsman

02/03/2008 11:40:00
Quote Anchor link
In mijn tabel heb ik een kolom Date en een kolom Time. De waarden uit deze kolommen wil ik samenvoegen in de kolom DateTime zodat ik de andere 2 kolommen kan verwijderen. Ik heb de volgende code opgesteld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
require 'db_connect.php';

$query = mysql_query("SELECT Date, Time FROM forecast");
while ($result = mysql_fetch_array($query)){
    $date = $result[0];
    $time = $result[1];
    $datetime = "$date $time";
    if($result){
        $query = mysql_query("UPDATE forecast SET DateTime='$datetime' WHERE Date = '" . $date . "' AND Time = '" . $time . "'");
        $result = mysql_query($query) or die("update niet gelukt omdat: " . mysql_error());
    }

    else
    {
        echo "ophalen is niet gelukt";
    }
}

?>


Maar ik krijg de foutmelding"update niet gelukt omdat: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1".

Wat gaat er niet goed?
 
PHP hulp

PHP hulp

24/12/2024 17:02:53
 
Bart van der veen

bart van der veen

02/03/2008 11:45:00
Quote Anchor link
echo $query gaat waarschijnlijk het volgende opleveren:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
UPDATE forecast SET DateTime='$date $time' WHERE Date = '" . $date . "' AND Time = '" . $time . "'");
//waarbij alleen de $date en $time ook dat werkenlijk verwerkte variabelen zijn.
//$datetime gaat dan natuurlijk fout.

?>


tip van de dag: http://dev.mysql.com/doc/refman/5.0/en/timestamp.html
 
Bo az

Bo az

02/03/2008 11:46:00
Quote Anchor link
Waarom 2x mysql_query er overheen halen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$query = mysql_query("UPDATE forecast SET DateTime='$datetime' WHERE Date = '" . $date . "' AND Time = '" . $time . "'");
        $result = mysql_query($query) or die("update niet gelukt omdat: " . mysql_error());


Maak er eens dit van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$query = "UPDATE forecast SET DateTime='$datetime' WHERE Date = '" . $date . "' AND Time = '" . $time . "'";
        $result = mysql_query($query) or die("update niet gelukt omdat: " . mysql_error());
 
- SanThe -

- SanThe -

02/03/2008 11:50:00
Quote Anchor link
$query = mysql_query("UPDATE ................
$result = mysql_query($query)

Hoeveel keer wil je de query uitvoeren?
 
Rene Zwolsman

Rene Zwolsman

02/03/2008 11:57:00
Quote Anchor link
@SanThe: ik heb 59 regels dus voor elke regel wil ik de datum en tijd samenvoegen in 1 kolom.
 
Bart van der veen

bart van der veen

02/03/2008 11:59:00
Quote Anchor link
@rene dat snappen we, maar zowel boaz en santhe hebben commentaar op je codering niet op je doel.
 
- SanThe -

- SanThe -

02/03/2008 12:09:00
Quote Anchor link
Er is een of andere functie voor in sql. Zoek even.

UPDATE ..... SET datetime = functie??(date + ' ' + tijd) WHERE ....
 
Jelmer -

Jelmer -

02/03/2008 12:11:00
Quote Anchor link
Werkt 1 simpele concat-query niet gewoon?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
UPDATE
    forecast
SET
    DateTime = CONCAT(Date, ' ', Time)

Overigens is het af te raden woorden als Date, Time en DateTime te gebruiken omdat MySQL deze zelf ook al gebruikt voor veldtypen. Bij ALTER & CREATE queries moet je dan wel backsticks gebruiken om MySQL koest te houden.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Frank -

Frank -

02/03/2008 12:20:00
Quote Anchor link
En als je standaard SQL gebruikt wat ook in andere databases werkt, gebruik je pipes ||:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
UPDATE
    forecast
SET
    DateTime = Date || ' ' || Time

tip: Gebruik geen hoofdletters voor tabel- en/of kolomnamen, dat gaat vroeg of laat fout.
 
Jelmer -

Jelmer -

02/03/2008 12:30:00
Quote Anchor link
Frank scoort hier weer punten voor PostgreSQL, want MySQL zal zonder de nodige aanwijzingen de dubbele streep niet als zodanig herkennen.

Maar daarom kan het geen kwaad om bij het openen van een verbinding even de modus naar zo-standaard-mogelijk te zetten. (documentatie)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SET sql_mode = 'ANSI'


Geen idee trouwens wat voor nadelige gevolgen dit heeft, ik gebruik het zelf niet.

edit: nu ik er over nadenk, wat is "standaard sql" nu eigenlijk als een van de meest gebruikte databases het niet standaard ondersteund... Wat maakt het dan standaard? Iemand die het "standaard" noemt?
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Frank -

Frank -

02/03/2008 12:36:00
Quote Anchor link
@Jelmer: Is mijn aanname van een standaard fout geconfigeerde MySQL-server, dan een verkeerde aanname?

;)

Ps. Heb ik zelf ook, anders krijg ik foute scripts niet aan de praat... Altijd ellende om deze te conferteren naar pgSQL

Edit: Zie ook de MySQL-handleiding, ook die beschrijft de ANSI-standaarden.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.