php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.01.2012, 14:45  
Benutzer
 
Registriert seit: 14.11.2011
Beiträge: 41
PHP-Kenntnisse:
Anfänger
Sevarox befindet sich auf einem aufstrebenden Ast
Standard Timestamp in Datum umwandeln

Servus Leute,

stehe gerade vor einem kleinen Problem.

In meiner Datenbank gibt es eine Spalte wo verschieden Datum`s drinne stehen.
(als Timestamp)

Bisher habe ich mir diesen auch immer als Timestamp rausgeholt und ihn dann mit date in ein normales Datum umgewandelt.

So allerdings habe ich nun eine andere Aufgabe, worauf ich so nicht mehr weitermachen kann wie bisher.

So sah bisher meine Abfrage aus:
PHP-Code:
/*$sql    =    "    SELECT    *
                                        FROM    [Tabellenname]
                                        WHERE     [Spaltenname] = ' ".$suchetime." ' "; */ 
Nun muss ich aber noch bevor ich diese Abfrage ausführe meinen Timestamp in der Datenbank in das jeweilige Datum umändern.

Habe bereits gelesen das es dafür einige Funktionen gibt (DATE, UNIXTIME, DATE_FORMAT etc.)

Nur wie es syntaxmäßig richtig ist hab ich noch nicht herausfinden können.

Habt ihr eine Idee welche Funktion zu empfehlen ist und wie die richtige Syntax bei der Abfrage lautet ?

Grüße
Sevarox ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.01.2012, 14:53  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Sevarox Beitrag anzeigen
in ein normales Datum umgewandelt.
...
in das jeweilige Datum umändern.
Aha, und was soll das für ein Format sein? FROM_UNIXTIME gibt dir DATETIME zurück, da gibt es auch zig Beispiele zu

http://dev.mysql.com/doc/refman/5.1/...functions.html
chorn ist offline   Mit Zitat antworten
Alt 27.01.2012, 14:54  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ein datum oder eine Datum/Zeit-Kombination sollte man immer mit den Spaltentypen date bzw datetime oder timestamp speichern. Das Speichern als integerwert ist, wie du jetzt feststellst, Schrott.

Wenn deine Anwendung es erlaubt (und du nicht zu viel ändern musst) dann wandele das doch in der Tabelle einfach um. Neue Spalte rein mit date oder datetime und dann
UPDATE tabelle SET datum = FROM_UNIXTIME(unixzeitspalte)

Danach kannst du die Mysql-Zeitfuktionen nutzen
http://dev.mysql.com/doc/refman/5.1/...functions.html

Falls du nur diese Query machen willst und weiter mit der Krücke leben musst, dann geht:

SELECT FROM_UNIXTIME(unixzeitspalte) AS datum FROM tabelle
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 27.01.2012, 14:59  
Benutzer
 
Registriert seit: 14.11.2011
Beiträge: 41
PHP-Kenntnisse:
Anfänger
Sevarox befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Wolla Beitrag anzeigen
Ein datum oder eine Datum/Zeit-Kombination sollte man immer mit den Spaltentypen date bzw datetime oder timestamp speichern. Das Speichern als integerwert ist, wie du jetzt feststellst, Schrott.

Wenn deine Anwendung es erlaubt (und du nicht zu viel ändern musst) dann wandele das doch in der Tabelle einfach um. Neue Spalte rein mit date oder datetime und dann
UPDATE tabelle SET datum = FROM_UNIXTIME(unixzeitspalte)

Danach kannst du die Mysql-Zeitfuktionen nutzen
http://dev.mysql.com/doc/refman/5.1/...functions.html

Falls du nur diese Query machen willst und weiter mit der Krücke leben musst, dann geht:

SELECT FROM_UNIXTIME(unixzeitspalte) AS datum FROM tabelle
Datenbank hab ich nicht angelegt, ich kümmer mich nur um eine andere Aufgabe deshalb ist es mir auch nicht möglich da jetz Änderungen in der Datenbank vorzunehmen. Der Kollege der dies gemacht hat ist aber auch nicht da, deshalb muss ich mir was anderes suchen oder hoffen das es bald wieder da ist.

Ansonsten wäre das mit einer extra Spalte wohl oder übel das einfachste. So kann ich gleich auf das fertige Datum in der Datenbank prüfen.
Sevarox ist offline   Mit Zitat antworten
Alt 13.02.2012, 07:11  
Benutzer
 
Registriert seit: 14.11.2011
Beiträge: 41
PHP-Kenntnisse:
Anfänger
Sevarox befindet sich auf einem aufstrebenden Ast
Standard

Ja, also die Spalte in der Datenbank ist bereits vom Typ 'timestamp'.

Folgende Anweisung klappt auch:

PHP-Code:
$sql "
                        SELECT     Tabelle1.* , DATE_FORMAT( FROM_UNIXTIME( Tabelle1.CreationTime ) , '%d.%m.%Y %h:%i:%s' ) AS datum
                        FROM     Tabelle1"

Doch das reicht mir ja nicht, ich will ja den Wert der in CreationTime drinne steht mit meinem eingegeben Suchwert $suchetime vergleichen.

So würde ich das dann machen:

PHP-Code:
$sql "
                        SELECT     Tabelle1.* , DATE_FORMAT( FROM_UNIXTIME( Tabelle1.CreationTime ) , '%d.%m.%Y %h:%i:%s' ) AS datum
                        FROM     Tabelle1
                        WHERE    CreationTime LIKE '%"
.$suchetime."%'"
Hier prüft er aber auf den timestamp und nicht auf das umgewandelte Datum.

Mit WHERE datum LIKE ... funktioniert es auch nicht...

Den Wert den ich in mein Suchfeld schreibe schreibe ich dann in $suchetime.

Also möchte ich dann den Wert in $suchetime mit meinem umgewandelten Datum vergleichen anstatt mit dem timestamp.

Kann mir einer helfen was ich falsch mache ?

Geändert von Sevarox (13.02.2012 um 07:16 Uhr).
Sevarox ist offline   Mit Zitat antworten
Alt 13.02.2012, 15:28  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Sevarox Beitrag anzeigen
Datenbank hab ich nicht angelegt, ich kümmer mich nur um eine andere Aufgabe deshalb ist es mir auch nicht möglich da jetz Änderungen in der Datenbank vorzunehmen. Der Kollege der dies gemacht hat ist aber auch nicht da, deshalb muss ich mir was anderes suchen oder hoffen das es bald wieder da ist.

Ansonsten wäre das mit einer extra Spalte wohl oder übel das einfachste. So kann ich gleich auf das fertige Datum in der Datenbank prüfen.
Warum extra Spalte, kann MySQL nicht den Typ ändern?

Code:
test=# create table zeiten (i int);
CREATE TABLE
Time: 0,621 ms
test=*# insert into zeiten values (1329087600);
INSERT 0 1
Time: 0,365 ms
test=*# alter table zeiten alter column i type date using ('epoch'::date + '1second'::interval * i)::date;
ALTER TABLE
Time: 70,301 ms
test=*# select i from zeiten ;
     i
------------
 2012-02-12
Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 14.02.2012, 07:09  
Benutzer
 
Registriert seit: 14.11.2011
Beiträge: 41
PHP-Kenntnisse:
Anfänger
Sevarox befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von akretschmer Beitrag anzeigen
Warum extra Spalte, kann MySQL nicht den Typ ändern?

Code:
test=# create table zeiten (i int);
CREATE TABLE
Time: 0,621 ms
test=*# insert into zeiten values (1329087600);
INSERT 0 1
Time: 0,365 ms
test=*# alter table zeiten alter column i type date using ('epoch'::date + '1second'::interval * i)::date;
ALTER TABLE
Time: 70,301 ms
test=*# select i from zeiten ;
     i
------------
 2012-02-12
Andreas
Hab es jetz anders gelöst dass ich mein eingegebenes Datum in einen Timestamp umwandel und dann einfach prüfe ob meine Datenbankzeile > 00:00:00 16.01.2012 und < 23:59:59 16.01.2012 ist.

So bekomme ich alle Zeilen dessen Timestamp in diesem Bereich liegt.


Das mit dem Datentyp ändern ist schlecht da schon viele Programme mit timestamp arbeiten - d.h. ich müsste es dann überall ändern. Ist nicht so das das mein erstes Programm mit dieser Datenbank ist.
Sevarox ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] mysql datum in timestamp umwandeln sevenseos Datenbanken 6 14.05.2010 21:03
mysqli_multi_query lässt Eintrag aus... Samhayne Datenbanken 8 07.02.2010 19:02
[Erledigt] Datum direkt im SQL Query umwandeln und vergleichen da.eXecutoR Datenbanken 2 23.11.2009 22:24
[Erledigt] Timestamp in Datum umwandeln phplars PHP Tipps 2009 5 30.10.2009 19:55
Timestamp mit SQL umwandeln Superanton Datenbanken 23 09.07.2009 11:16
[Erledigt] String in Datum umwandeln Berliner PHP Tipps 2009 4 12.05.2009 21:08
[Erledigt] datum umwandeln mit strtotime vinter PHP Tipps 2009 2 26.02.2009 18:49
Text in Datum umwandeln YAT PHP Tipps 2008 19 26.11.2008 11:20
Unix Timestamp in Datum umwandeln pHleX PHP Tipps 2007 2 09.07.2007 17:11
Wie kann ich ein Datum in einem Unix Timestamp umwandeln tomtaz PHP Tipps 2006 10 24.05.2006 19:38
Umwandlung Datum [yyyy-mm-tt] -> Timestamp PHP Tipps 2007 4 29.12.2005 11:53
Datum aus Datenbank (TIMESTAMP) erzeugen PHP Tipps 2005 3 13.02.2005 01:19
in Datum umwandeln PHP Tipps 2004 4 01.09.2004 22:56
Datum mit Timestamp vergleichen? PHP Tipps 2004 1 28.08.2004 03:06
Timestamp --> Datum PHP Tipps 2004 12 27.08.2004 21:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
timestamp in datum umwandeln, timestamp in datetime umwandeln php, normales datum in sql datum umwandeln, mysql spalte ändern datetime, umrechnung timestamp date sql, timestamp in datum und zeit spalten, timestamp datetime umwandeln, timestamp sql umwandeln in richtiges datum, php timestamp nur datum vergleichen, mysql datumswert aus zeitwet aus datenbank umrechnen, sql timestamp umwandeln php, sql timestamp in datum umwandeln, sql feldtyp datetime in normales datum umwandeln, spalte von timestamp auf date, eingegebener timestamp umwandeln, sekunden in datum umrechnen quellcode, sql datum timestamp, timestamp datum umwandeln php, html timestamp@in@datum@umwandeln, php jjjj mm tt umwandeln

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum