PHP SQL DATE Question

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Senos
Δημοσιεύσεις: 11
Εγγραφή: 16 Φεβ 2008 01:07

PHP SQL DATE Question

Δημοσίευση από Senos » 16 Φεβ 2008 02:07

Γεια σας, kai sinxaritiria gia to sites san, pigenei kala!
to proto mu post edw!

mia erotisi loipon gia anaktisi imerominies
exoume enan pinaka san auto

--------DATE---------------ID--
2007-12-28 17:07:34 | 2
2007-12-30 15:33:05 | 16
2007-12-30 15:33:52 | 17
2008-01-02 00:29:43 | 20
2008-01-01 22:27:15 | 19
2008-01-10 17:39:15 | 22
2008-01-10 18:40:25 | 25
2008-01-17 21:34:58 | 26
---------------------------------

i eisagogi tin dedomenon egine me tin sinartisi now()

twra gia tin anaktisi.


thelw na kanw ena erotima pu na epilegei ta id kai na ta emfanizei
yyyy-mm-dd id
yyyy-mm-dd id


kai episeis pws mporw na vrw ola ta id pu exoun ginei stis 2008-01-10 px ?

uparxei lisi i prepei na allaksw tupo eisagwgis tis imeromonias ?

tha ektimisw polu tin voitheia sas. :o

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

PHP SQL DATE Question

Δημοσίευση από vassilism » 16 Φεβ 2008 17:43

Καλωσόρισες :D

Κώδικας: Επιλογή όλων

<?php
//Create a connection to MySQL and select "my_db" database
$con = mysql_connect&#40;"localhost","onoma_xristi","kodikos"&#41; 
or die&#40; 'Could not connect to DB&#58; ' . mysql_error&#40;&#41; &#41;;
mysql_select_db&#40;"to onoma tis vasis sou", $con&#41; or die&#40; mysql_error&#40;&#41; &#41;;
mysql_query&#40;"SET NAMES 'utf8'", $con&#41;;

$query = "SELECT DATE,ID FROM to onoma tou pinaka sou"; 
$result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;; 

while &#40;$rows = mysql_fetch_array&#40;$result&#41;&#41; 
 &#123;  		
    echo&#40;"<p>". $rows&#91;"DATE"&#93; ."</p>"&#41;;
    echo&#40;"<p>". $rows&#91;"ID"&#93; ."</p>"&#41;;
  &#125;
?>
Για να εμφανίζεις όλα τα id που έχουν γίνει στις 2008-01-10:

Κώδικας: Επιλογή όλων

<?php
//Create a connection to MySQL and select "my_db" database
$con = mysql_connect&#40;"localhost","onoma_xristi","kodikos"&#41; 
or die&#40; 'Could not connect to DB&#58; ' . mysql_error&#40;&#41; &#41;;
mysql_select_db&#40;"to onoma tis vasis sou", $con&#41; or die&#40; mysql_error&#40;&#41; &#41;;
mysql_query&#40;"SET NAMES 'utf8'", $con&#41;;

$query = "SELECT DATE,ID FROM to onoma tou pinaka sou WHERE id='2008-01-10'"; 
$result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;; 

while &#40;$rows = mysql_fetch_array&#40;$result&#41;&#41; 
   &#123;  		
     echo&#40;"<p>". $rows&#91;"DATE"&#93; ."</p>"&#41;;
     echo&#40;"<p>". $rows&#91;"ID"&#93; ."</p>"&#41;;
   &#125;
?>

Senos
Δημοσιεύσεις: 11
Εγγραφή: 16 Φεβ 2008 01:07

PHP SQL DATE Question

Δημοσίευση από Senos » 16 Φεβ 2008 19:41

katarxin na se euxaristisw gia tin prospatheia.
apo tin anagnwsti tou 1ou kodika pu egrapses kai mono katalavenw oti i imerominia
tha emfanistei 2008-01-10 18:40:25 kai oxi 2008-01-10.
kanw lathos?

twra gia to deutero pistevw oti den tha mu emfanisei apotelesmata an psaksw gia 2008-01-10 .
afou i pragmatiki imerominia einai: 2008-01-10 18:40:25

auto akrivos den mporw na skeftw pws tha ginei..
i diafora anamesa se 2008-01-10 18:40:25 kai 2008-01-10.

Se euxaristw para poly gia tin prospatheia sou !

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

PHP SQL DATE Question

Δημοσίευση από vassilism » 16 Φεβ 2008 19:50

Ακριβώς. Θα εμφανισθεί ολόκληρο 2008-01-10 18:40:25.
Για να εμφανίζετε μόνο το 2008-01-10, νομίζω πρέπει να κάνεις explode στο πεδίο, αλλά δεν ξέρω πως γίνετε ακριβώς.

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

PHP SQL DATE Question

Δημοσίευση από Banavas » 16 Φεβ 2008 21:11

Κώδικας: Επιλογή όλων

  echo&#40;"<p>". substr&#40;$rows&#91;"DATE"&#93;,0,10&#41; ."</p>"&#41;; 
Happy coding....
Μάρκος
http://lasernet.gr

Senos
Δημοσιεύσεις: 11
Εγγραφή: 16 Φεβ 2008 01:07

PHP SQL DATE Question

Δημοσίευση από Senos » 16 Φεβ 2008 21:30

Banavas έγραψε:

Κώδικας: Επιλογή όλων

  echo&#40;"<p>". substr&#40;$rows&#91;"DATE"&#93;,0,10&#41; ."</p>"&#41;; 
as upothesoume oti to 0 einai o xaraktiras pu theloume na arxisei kai to 10 ekei pu theloume na teliosei to apotelesma ara 2008-01-10 18:40:25. vlepume mono tous protous 10 !
Doulepse stin anaktisi! polu swsta ! se euxaristw !

twra omos ta pio diskola. . . :-?

poio 8a einai to erwtima pou 8a emfanizei ola ta id pu eginan stis 2008-01-10 ?


mipos einai kalitera gia mena na allaksw tin sinartisi now() <- [sinartisi me tin opoia apothikeuw tin xroniki stigmi] me kati allo ?

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

PHP SQL DATE Question

Δημοσίευση από dik_ » 16 Φεβ 2008 21:34

Γενικά βρίσκω ένα απλό unix timestamp αρκετά πιο ευέλικτο. Σκέψου το...

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

PHP SQL DATE Question

Δημοσίευση από Banavas » 17 Φεβ 2008 09:59

Αν απλώς δεν σε ενδιαφέρουν τα υπόλοιπα πλιν της ημερομηνίας μπορείς να βάλεις τύπο πεδίου DATE. Αν χρειάζεσαι περισσότερα στοιχεία από την ημερομηνία τότε προτείνω και εγώ ένα unix timestamp.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

PHP SQL DATE Question

Δημοσίευση από cherouvim » 17 Φεβ 2008 10:20

dik_ έγραψε:Γενικά βρίσκω ένα απλό unix timestamp αρκετά πιο ευέλικτο. Σκέψου το...
Έτσι έλεγα και εγώ για χρόνια. Τώρα παίζω με datetime (στην MySQL).
Ενδιαφέρον θέμα για συζήτηση.

http://lists.evolt.org/archive/Week-of- ... 09603.html
- You can't calc dates before 1970 with the UNIX Timestamp.
- You can't calc dates after 2023 with the UNIX Timestamp.
- There are no (or limited) SQL functions for UNIX Timestamp.
http://www.phpbuilder.com/board/archive ... 66444.html

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

PHP SQL DATE Question

Δημοσίευση από dik_ » 17 Φεβ 2008 21:35

Χμμ, ωραίο debate... μερικές σκέψεις μου:

-Φαντάζομαι οι date functions δεν είναι portable. Αν και δύσκολα θα πάω σε άλλη DB εκτός mysql, είναι περιορισμός που αποφεύγεται...

-Απ' το προηγούμενο (και για άλλους λόγους) προκύπτει ότι δεν μπορείς να χρησιμοποιήσεις Active Records.

-Για κάποιον λόγο προτιμώ να αποθηκεύω όσο πιο generic data στη DB και να την επεξεργάζομαι σε PHP επίπεδο. Μου φαίνεται πιο ευέλικτη και portable λύση, συν του ότι όσες φορές είχα πρόβλημα overloading, ήταν στα threads της mysql και όχι της php!

-Θα έχουμε φύγει απ' τα 32/64 bits πολύ πριν το 2023, ελπίζω! Αν θέλω τέτοιες ημερομηνίες τώρα (ή ημερομηνίες πριν το 1970), μπορώ να το κάνω infer χρησιμοποιώντας βοηθητική στήλη και επεξεργασία σε php. Είναι λίγο βρώμικος τρόπος, αλλά γίνεται.

-Στα ερωτήματα του τύπου, π.χ. πώς να πάρω τις γραμμές του Μαΐου, πάλι γίνεται εύκολα με λίγη επεξεργασία πρώτα σε php...

Υπάρχουν trade offs όπως πολύ συχνά, φαντάζομαι εξαρτάται κι από το app που φτιάχνεις.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

PHP SQL DATE Question

Δημοσίευση από cherouvim » 17 Φεβ 2008 21:51

Σωστά.

Πάντως νομίζω οτι τα RDBMSes είναι βελτιστοποιημένα στο να κρατάνε τα datetimes σωστά. Το αναφέρω αυτό γιατί και εγώ πριν καιρό νόμιζα οτι το unix timestamp θα έχει καλύτερη απόδοση. Πάντως δεν έχω κάνει κάποιο performance test.

Ο βασικός μου λόγος δεν είναι τα date functions, ούτως ή άλλως δεν μιλάω ποτέ SQL, μιας και το κάνει το ORM μου για εμένα. Χρησιμοποιώ datetime για λόγους readability και φυσικά εύκολης κατανόησης του σχήματος από τους λοιπούς συνεργάτες στο έργο.

Σε μία, ίσως τραβηγμένη, γενικοποίηση αυτού του debate, θα μπορούσαμε να πούμε οτι θα σώζαμε τα πάντα σε varchar. Είναι κάτι πολύ γενικό και με το κατάλληλο marshaling/unmarshaling (στο server side) μπορεί να κρατήσει ότι datatype θέλουμε.

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

PHP SQL DATE Question

Δημοσίευση από dik_ » 18 Φεβ 2008 00:56

Πολύ πιθανό να είναι βελτιστοποιημένα, δεν γνωρίζω, αλλά πιο βελτιστοποιημένα από τα ταπεινά integers;;!

Αυτό το ORM θα ήθελα να το δοκιμάσω κάποια στιγμή, αλλά μάλλον σε κάποιο φρέσκο project μιας και σε LAMP τουλάχιστον έχει πολλά conventions που δεν έχω τηρήσει... :) Readability εννοείς να ανοίξεις χύμα τη βάση και να διαβάσεις τις ημερομηνίες; ΟΚ, δεκτό, αλλά όχι αρκετά καλός λόγος για μένα ;)

Τραβηγμένη όντως. Σκέψου ένα χαζό παράδειγμα, τη σύντομη μορφή των μηνών στα ελληνικά: όλοι γράφονται με 3 γράμματα, εκτός Ιουνίου και Ιουλίου που θέλουν 4. Είναι να μην μπλέξεις με εξαιρέσεις επί εξαιρέσεων! :)

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης