date format

Status
Niet open voor verdere reacties.

gebruiker35

Gebruiker
Lid geworden
29 mrt 2008
Berichten
434
Ik wil uit mijn sql database verschillende rijen halen die als type datetime hebben. deze wil ik dus omzetten. maar hoe kan ik meerdere rijen tegelijk doen?

PHP:
	$sql = "SELECT *, DATE_FORMAT(send '%d-%m-%Y om %H:%i uur') AS send, DATE_FORMAT(replied1, '%d-%m-%Y om %H:%i uur') AS replied1 FROM tickets  WHERE id = $id";

maarja.. als dat 5 keer moet krijg je rommelcode, vast wel iets simpelers voor!
 
Volgensmij niet hoor. Je zult bij elke rij het formaat op moeten geven. Je kunt het hoogstens in PHP in de configuratie zetten en op elke nodige locatie er in plakken, of een functie gebruiken;

PHP:
function dateformat( $field ) {
  return "DATE_FORMAT( $field, '%d-%m-%Y om %H:%i uur')"
}


$sql = "SELECT *,"
. dateformat( 'send') . " AS send, "
. dateformat( 'replied1' ) . " AS replied1 
FROM tickets  
WHERE id = $id";

Maar voor SQL moet je gewoon elke kolom uitschrijven.
 
Je zou ook een eenvoudige functie in sql kunnen maken. Is eigenlijk het zelfde idee als een functie in php, gebruik wat je zelf makkelijk vind.[sql]DELIMITER /

CREATE FUNCTION dformat ( l_date DATETIME )
RETURNS VARCHAR(255)
DETERMINISTIC NO SQL
BEGIN
RETURN DATE_FORMAT( l_date, '%d-%m-%Y om %H:%i uur' );
END;
/

DELIMITER ;[/sql]
Het werkt dan op deze manier:[sql]mysql> SELECT dformat( now() ) a
-> , dformat( '2009-05-20 12:10:11' ) b
-> , dformat( '2007-04-06 20:56:43' ) c;
+-------------------------+-------------------------+-------------------------+
| a | b | c |
+-------------------------+-------------------------+-------------------------+
| 24-05-2009 om 10:31 uur | 20-05-2009 om 12:10 uur | 06-04-2007 om 20:56 uur |
+-------------------------+-------------------------+-------------------------+
1 row in set (0.00 sec)[/sql]
 
kun je die sql codes gewoon in je php zetten?

ik ben nog maar beginner met sql/mysql dus... :$
 
Creëren van een functie is éénmalig, dit kan bijvoorbeeld via phpmyadmin. Daarna kun je deze functie, net als bijvoorbeeld date_format, in je php gebruiken. De code uit het eerste bericht komt er dan zo uit te zien:
PHP:
$sql = "SELECT *
        ,      DFORMAT(send)     AS send
        ,      DFORMAT(replied1) AS replied1
        FROM   tickets
        WHERE  id = $id";
Maar het hoeft niet in sql hoor, zoals Frats al aangeeft, het kan ook in php.
 
Code:
Fout

SQL-query:

DELIMITER / CREATE FUNCTION dformat(
l_date DATETIME
) RETURNS VARCHAR( 255 ) DETERMINISTIC NO SQL BEGIN RETURN DATE_FORMAT( l_date, '%d-%m-%Y om %H:%i uur' ) ;

MySQL retourneerde: Documentatie
#1064 - 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 'DELIMITER /

CREATE FUNCTION dformat ( l_date DATETIME )
RETURNS VARCHAR(255' at line 1
 
In phpmyadmin werkt dat blijkbaar net even anders als via een 'gewone' commandline. :confused: Wanneer je een recente versie van phpmyadmin hebt kun je onder het sql-venster de delimiter instellen. Ze deze op een een slash en plak alleen het "create function"- statement in het sql-venster:

attachment.php


Dit zou het resultaat moeten zijn:

attachment.php
 

Bijlagen

  • f1.jpg
    f1.jpg
    19,1 KB · Weergaven: 58
  • f2.jpg
    f2.jpg
    18,1 KB · Weergaven: 63
excuus voor de late reactie, maar heb dit geprobeerd. het lijkt niet te zijn teogestaan om een functie te maken, heb k dat juist?

MySQL retourneerde: Documentatie
#1044 - Access denied for user 'md....db.......'@'11.1.11.%' to database 'md....db....'



Klant/databasegegevens zijn uit foutmelding wegehaald
 
Misschien heb je geen CREATE FUNCTION rechten. Heb je aan je provider gevraagd of die optie beschikbaar is?
 
ja, in de vragenbak van hun gegooid gegarandeerd binnen 24 uur antwoord, duurt meestal langer, je hoort t wel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan