Περίεργο query...

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

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

Απάντηση
kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Περίεργο query...

Δημοσίευση από kalpatron » 15 Ιούλ 2009 15:23

Βασικά δεν ξέρω πως να το ψάξω και για αυτό το λόγο δεν μπορώ να βρω λύση...

Υπάρχει το παρακάτω table των news
table news
title
subtitle
text
date
time
strtotime_date (μετατροπή του date σε strtotime)
strtotime_time (μετατροπή του time σε strtotime)
status (απλά αν είναι on εμφανίζεται στο site)

Τώρα έχω και τα $currentdate και $curretnttime, τα οποία έχουν σε μορφή strtotime την ημερομηνία και την ώρα την κάθε στιγμή (περιλαμβάνονται σε κάθε σελίδα).


Αυτό που θέλω είναι ένα query Sql της παρακάτω μορφής που δεν είμαι σίγουρος πως θα το κάνω... Πρέπει να λαμβάνει όλα τα news με status on και ημερομηνία και ώρα πιο παλιά από της τωρινής. Υπό αυτό τον τρόπο, μπορώ να postάρω νέο με αυριανή ημερομηνία και να εμφανιστεί αυτόματα την επόμενη μέρα στο site.

Έχουμε και λέμε λοιπόν...


SELECT * FROM news WHERE status=='on' AND ((strtotime_date < $currentdate) OR (strtotime_date==$currentdate AND strtotime_time < $curretnttime))

Προφανώς το ερώτημα αυτό είναι λάθος. Πως θα τρο πραγματοποιήσω; Μήπως με κάποιο UNION?

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

Περίεργο query...

Δημοσίευση από cherouvim » 15 Ιούλ 2009 16:09

Είναι δικιά σου η βάση;
Γιατί έχεις 4 πεδία για το χρόνο (δημοσίευσης; δημιουργίας; τι είναι αυτό;) αντί για 1 τύπου datetime;

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Περίεργο query...

Δημοσίευση από kalpatron » 15 Ιούλ 2009 16:16

Γιατί προέρχεται από μετατροπή παλιάς βάσης. Είναι της μορφής date και time.
Απλά επειδή χρειαζόμουν ένα τρόπο να συγκρίνω ημερομηνίες, έβαλα 2 επιπλέον μεταβλητές σε μορφή strtotime

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6237
Εγγραφή: 30 Νοέμ 2004 03:09

Περίεργο query...

Δημοσίευση από fafos » 15 Ιούλ 2009 16:36

kalpatron έγραψε:Γιατί προέρχεται από μετατροπή παλιάς βάσης. Είναι της μορφής date και time.
Απλά επειδή χρειαζόμουν ένα τρόπο να συγκρίνω ημερομηνίες, έβαλα 2 επιπλέον μεταβλητές σε μορφή strtotime
poies oi diafores ths date kai ths time? ti apothikeuei h mia kai ti allh? se ti morfh apothikeuontai? se timestamp?
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Περίεργο query...

Δημοσίευση από kalpatron » 15 Ιούλ 2009 16:39

DATE 2009/07/15 (κάνω explode για να την εμφανίσω σε μορφή 15/07/2009)
TIME 15:38:59
Τελευταία επεξεργασία από το μέλος kalpatron την 15 Ιούλ 2009 16:45, έχει επεξεργασθεί 1 φορά συνολικά.

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

Περίεργο query...

Δημοσίευση από cherouvim » 15 Ιούλ 2009 16:45

Αν είναι δικιά σου η βάση αξίζει να την βελτιώσεις και μετά να κάνεις ότι reporting δουλειά χρειάζεσαι πάνω της.

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Περίεργο query...

Δημοσίευση από kalpatron » 15 Ιούλ 2009 16:47

Ναι δική μου είναι η βάση.
Έχω μεταφέρει πολλά δεδομένα από προηγούμενη βάση που δεν είχα καν το πεδίο status - οπότε μην μου πείτε διαφορετικό τρόπο. Παρακαλώ αν μπορεί κάποιος να παραθέσει τον τρόπο για να κάνω το SELECT.
Ευχαριστώ!

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6237
Εγγραφή: 30 Νοέμ 2004 03:09

Περίεργο query...

Δημοσίευση από fafos » 15 Ιούλ 2009 16:59

h function strtotime() metatrepei thn hmeromhnia se keimeno: p.x. 1st February 2003.. einai etsi sthn vash sou? mhpos xrhsimopoieis kapoia allh function gia thn metatroph xronou? mporeis na mas deikseis mia eggrafh sthn vash sou?
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Περίεργο query...

Δημοσίευση από kalpatron » 15 Ιούλ 2009 23:59

Παρακάτω μια εγγραφή στην βάση μου (χωρίς id και τα κείμενα...)

date 2009-07-13
strtotime_date 1247432400
time 06:50:34
strtotime_time 1247457034
status on

Απλά όταν έψαξα θέματα σύγκρισης ημερομηνιών και ωρας, βρήκα οτι η καλύτερη λύση (α καλό!) είναι η χρήση της strtotime.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6237
Εγγραφή: 30 Νοέμ 2004 03:09

Περίεργο query...

Δημοσίευση από fafos » 16 Ιούλ 2009 00:23

kalpatron έγραψε:Παρακάτω μια εγγραφή στην βάση μου (χωρίς id και τα κείμενα...)

date 2009-07-13
strtotime_date 1247432400
time 06:50:34
strtotime_time 1247457034
status on

Απλά όταν έψαξα θέματα σύγκρισης ημερομηνιών και ωρας, βρήκα οτι η καλύτερη λύση (α καλό!) είναι η χρήση της strtotime.
mono thn strtotime_time sygkrine... h strtotime_date deixnei thn hmeromhnia stis 12:00 ta mesanyxta:

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

SELECT * FROM news WHERE status=='on' AND strtotime_time < '$currenttime' 
opou $currenttime = time();
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Περίεργο query...

Δημοσίευση από kalpatron » 16 Ιούλ 2009 00:56

:kaloe: Εμ... ναι... το ήξερα... δουλεύει

Αλλά ας μου λύση κάποιος την απορία πως φτιάχνεται ένα τέτοιο Query σε περίπτωση που το χρειαστώ.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6237
Εγγραφή: 30 Νοέμ 2004 03:09

Περίεργο query...

Δημοσίευση από fafos » 16 Ιούλ 2009 01:33

kalpatron έγραψε::kaloe: Εμ... ναι... το ήξερα... δουλεύει

Αλλά ας μου λύση κάποιος την απορία πως φτιάχνεται ένα τέτοιο Query σε περίπτωση που το χρειαστώ.
ti enoeis pos feiaxnetai? anelyse to...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Περίεργο query...

Δημοσίευση από kalpatron » 16 Ιούλ 2009 21:29

ΤΕΛΙΚΑ ΛΑΘΟΣ!!!!!

Όταν προσθέτω ένα νέο, διαλέγω ημερομηνία και ώρα. Από default το σύστημα μου εμφανίζει την ημερομηνία και ώρα εκείνης της στιγμής. Όταν αποθηκεύω το άρθρο, τότε αποθηκεύεται date, time και η ώρα time σε μορφή strtotime (στην $strtotime_time).

fafos ωραία η λύση να χρησιμοποιήσω στο query μόνο την strtotime_time, αλλά ισχύει μόνο για την συγκεκριμένη ημέρα. Αν για παράδειγμα η ώρα είναι 21:00, και εγώ βάλω ένα νέο με αυριανή ημερομηνία αλλά ώρα 20:30, λανθασμένα θα εμφανιστεί στο site...

Άρα πρέπει στο query κάπως να συμπεριλάβω και την ημερομηνία - date.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6237
Εγγραφή: 30 Νοέμ 2004 03:09

Περίεργο query...

Δημοσίευση από fafos » 16 Ιούλ 2009 21:41

kalpatron έγραψε:ΤΕΛΙΚΑ ΛΑΘΟΣ!!!!!

Όταν προσθέτω ένα νέο, διαλέγω ημερομηνία και ώρα. Από default το σύστημα μου εμφανίζει την ημερομηνία και ώρα εκείνης της στιγμής. Όταν αποθηκεύω το άρθρο, τότε αποθηκεύεται date, time και η ώρα time σε μορφή strtotime (στην $strtotime_time).

fafos ωραία η λύση να χρησιμοποιήσω στο query μόνο την strtotime_time, αλλά ισχύει μόνο για την συγκεκριμένη ημέρα. Αν για παράδειγμα η ώρα είναι 21:00, και εγώ βάλω ένα νέο με αυριανή ημερομηνία αλλά ώρα 20:30, λανθασμένα θα εμφανιστεί στο site...

Άρα πρέπει στο query κάπως να συμπεριλάβω και την ημερομηνία - date.
ekshghse mas...

h time apothikeuei thn hmeromhnia pou kataxoreis to neo kai...

h date apothikeuei thn hmeromhnia pou thes na emfanizetai to neo?
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Περίεργο query...

Δημοσίευση από kalpatron » 16 Ιούλ 2009 21:45

H time αποθηκεύει ΜΟΝΟ ώρα
και η date ΜΟΝΟ ημερομηνία

Στην μορφή που έχω γράψει και πιο πάνω...

Απάντηση

Επιστροφή στο “MySQL”

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

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