Archiv verlassen und diese Seite im Standarddesign anzeigen : date()
bweichel
28.09.2005, 12:44:15
Hallo,
im Datenbankfeld wurde als Typ "date" angegeben. Bekanntlich wird das Datum dort wie folgt gespeichert: 2005-08-01.
Für die Anzeige auf der Internetseite müßte es allerdings 01.08.2005 ausgegeben werden. Gibt es eine Möglichkeit das Datum mit der Funktion date() für die Internetseite richtig zu formatieren?
Ich habe es bereits mit folgendem Script versucht, hatte aber wenig Erfolg:
<?php
$row['datum'] = date("d.m.Y", $row['datum']);
?>
Vielen Dank für eure Hilfe!
Beste Grüße
Björn
--> http://php.net/strtotime
bweichel
28.09.2005, 12:54:49
ok super funktioniert.
gibt es auch ne möglichkeit die formatierung umgekehrt zu realisieren? wenn auf der website die eingabe mit dem format 01.08.2005 erfolgt und in das datenbankfeld mit 2005-08-01 eingeschrieben werden soll?
dann kann ich doch strtotime nicht verwendet, weil das übergebene datum nicht mehr das korrekte format hat.
danke für deine hilfe!
Wenn strtotime() das nicht kann, dann wirst Du das mit explode() machen dürfen.
bweichel
28.09.2005, 13:07:03
Also so:
$geburtsdatum = explode(".", $_POST['geburtsdatum']);
$_POST['geburtsdatum'] = $geburtsdatum[2] . "-" . $geburtsdatum[1] . "-" . $geburtsdatum[0];
Aber davon wollte ich eigentlich weg. Gibt es keine bessere Lösung?
meikel (†)
28.09.2005, 14:28:10
im Datenbankfeld wurde als Typ "date" angegeben. Bekanntlich wird das Datum dort wie folgt gespeichert: 2005-08-01.
Für die Anzeige auf der Internetseite müßte es allerdings 01.08.2005 ausgegeben werden.
Keine Hürde für MySQL. Lesen:
http://dev.mysql.com/doc/mysql/de/date-and-time-functions.html
SELECT date_format(datum_spalte, '%d.%m.%Y') AS datum_ausgabe, spalte2, spalte3 FROM tabelle
xabbuh
28.09.2005, 16:09:57
Die Umwandlung von DD.MM.YYYY nach YYYY-MM-DD kann beispielsweise auch so erfolgen:
[php]
<?php
$date = implode('-', array_reverse(explode('.', $date)));
?>
bweichel
30.09.2005, 11:12:07
Würde denn die Umwandlung auch so in MySQL funktionieren..
INSERT
INTO tabelle
(spalte1)
VALUES(date_format($datum, '%Y-%m-%d'))
---
Noch ne Frage:
Ich möchte auf einer Website alle User mit Ihrem Geburtsdatum ausgeben die innerhalb eines Monats Geburtstag haben. Wie würdet das lösen?
date_sub(CURRDATE(), INTERVAL 1 MONTH)
geht ja nicht, da das Geburtsjahr auch beachtet.
meikel (†)
30.09.2005, 12:13:16
Würde denn die Umwandlung auch so in MySQL funktionieren.
Nein. Ist aber auch nicht notwendig, wenn Du das Formular so gestaltest, daß es 2 Dropdowns (Tag und Monat) und ein Textfeld (Jahr, 4stellig) gibt.
Dann sieht das INSERT so aus:
1. Testen, ob die Formularvariablen korrekt gesetzt wurden.
2.
$sql = sprintf('INSERT INTO tabelle (datum, id) VALUES ('%s-%s-%s', '%s')'
mysql_escape_string( (str_len($_POST['jahr']) < 4
? ($_POST['jahr'] + 2000)
: $_POST['jahr']),
mysql_escape_string(str_pad($_POST['tag'], '0')),
mysql_escape_string(str_pad($_POST['monat'], '0')),
mysql_escape_string($_POST['id'])
);
Ich möchte auf einer Website alle User mit Ihrem Geburtsdatum ausgeben die innerhalb eines Monats Geburtstag haben. Wie würdet das lösen?
Kein Problem:
http://dev.mysql.com/doc/mysql/de/date-and-time-functions.html
SELECT <spaltenliste> FROM tabelle WHERE MONTH(datum) = MONTH( NOW())
xabbuh
30.09.2005, 12:38:44
Würde denn die Umwandlung auch so in MySQL funktionieren.
Mit der MySQL-Funktion STR_TO_DATE() (http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html) kannst du das Datum auch direkt in der Query formatieren:
INSERT INTO
tabelle
SET
spalte1 = STR_TO_DATE('30.09.2005', '%d.%m.%Y')
bweichel
29.10.2005, 19:33:33
Hallo,
wie kann ich alle User auflisten die in den nächsten 30 Tagen Geburtstag haben? Das o. g. Beispiel listet nur die Geburtage auf, die im gleichen Monat stattinden.
Beste Grüße
Björn
meikel (†)
29.10.2005, 21:09:31
wie kann ich alle User auflisten die in den nächsten 30 Tagen Geburtstag haben? Das o. g. Beispiel listet nur die Geburtage auf, die im gleichen Monat stattinden.
Ein bißchen Eigenleistung solltest Du auch mal selber aufbringen können.
Überlege einfach, wie die WHERE Klausel aussehen muß, damit Du den Bereich von NOW() bis NOW() + 30 Tage aussehen könnte.
BETWEEN und DATE_ADD() wären da Deine Freunde, wenn Du das Handbuch mal selber lesen würdest.
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.