Μορφή πεδίου date 20081013, θέλω να πάρω μόνο το 2008. Πως;

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

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

Απάντηση
Akis_gr49
Δημοσιεύσεις: 266
Εγγραφή: 07 Ιουν 2007 13:49

Μορφή πεδίου date 20081013, θέλω να πάρω μόνο το 2008. Πως;

Δημοσίευση από Akis_gr49 » 13 Οκτ 2008 19:46

Καλησπέρα σε όλη την κοινότητα,

Έχω ένα ερώτημα, μάλλον λίγο περίπλοκο.
Έχω έναν πίνακα στην βάση μου με 15 πεδία και 580 εγγραφές.
Το ένα πεδίο είναι varchar και λέγεται date.
Οι εγγραφές του είναι της μορφής 20081013

Στην μορφή που είναι γραμμένο δεν βοηθάει.
Θέλω να πάρω όλες τις εγγραφές από τον πίνακα για την χρονία 2008.

Δοκίμασα αυτό αλλά δεν λαμβάνω αποτέλεσμα.
$query = 'SELECT * FROM table WHERE '
.' '.substr(date,0,4).' = date ORDER BY date ASC';

Κάθε βοήθεια ευπρόσδεκτη, να 'στε καλά.

Άβαταρ μέλους
greekbytes
WebDev Moderator
Δημοσιεύσεις: 2438
Εγγραφή: 15 Νοέμ 2002 15:42
Τοποθεσία: Αθήνα
Επικοινωνία:

Μορφή πεδίου date 20081013, θέλω να πάρω μόνο το 2008. Πως;

Δημοσίευση από greekbytes » 13 Οκτ 2008 20:01

Νομίζω έτσι θα παίξει.. Δοκίμασε το ;)

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

$query = "SELECT * FROM table WHERE date LIKE '2008%' ORDER BY date ASC";

Akis_gr49
Δημοσιεύσεις: 266
Εγγραφή: 07 Ιουν 2007 13:49

Μορφή πεδίου date 20081013, θέλω να πάρω μόνο το 2008. Πως;

Δημοσίευση από Akis_gr49 » 13 Οκτ 2008 20:07

πωωωω πως και δεν το σκέφτηκα!!!
Αχχχχ. :) Ευχαριστώ πολύ φίλε greekbytes, να σαι καλά.

Έπαιξε κανονικότατα!


Akis_gr49
Δημοσιεύσεις: 266
Εγγραφή: 07 Ιουν 2007 13:49

Μορφή πεδίου date 20081013, θέλω να πάρω μόνο το 2008. Πως;

Δημοσίευση από Akis_gr49 » 13 Οκτ 2008 20:09

Ώπα, αν θέλουμε να πάρουμε τον μήνα;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Μορφή πεδίου date 20081013, θέλω να πάρω μόνο το 2008. Πως;

Δημοσίευση από korgr » 13 Οκτ 2008 20:35

Ο πίνακας σου δεν έχει σχεδιασθεί σωστά όσον αφορά την καταχώρηση ημερομηνιών. Αφού δεν χρησιμοποίησες από την αρχή τύπο filed "date" ή δεν φρόντισες να αποθηκεύεις την ημερομηνία σε 3 πεδία (year - month - day), θα πρέπει τουλάχιστον να μετατρέψεις με ένα script την μορφή των δεδομένων του πεδίου σου.
Αν είναι σταθερό το format, δηλαδή τα 4 πρώτα ψηφία= έτος, τα 2 επόμενα= μήνας και τα 2 τελευταία= ημέρα, μπορείς να διαβάσεις μία μία όλες τις τιμές, να τις χωρίσεις με substr, να τις ενώσεις με κάποιο seperator, πχ το "|" και να τις ξαναποθηκεύσεις με τη μορφή πχ 2008|10|13
Έτσι με την like (2008|month|) θα κάνεις δουλειά...
Είναι μπακάλικη λύση όμως...
3 πεδία ή τύπος date είναι ο ενδεδειγμένος!

Βέβαια επειδή η mysql δεν είναι από τα δυνατά μου σημεία, ίσως κάποιος συνάδελφος έχει καλύτερη λύση να σου προτείνει...

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Μορφή πεδίου date 20081013, θέλω να πάρω μόνο το 2008. Πως;

Δημοσίευση από dva_dev » 13 Οκτ 2008 22:41

Μην ανακαλύπτεις τον τροχό από την αρχή. To date έχει φτιαχτεί για να κρατάει ημερομηνίες. Επίσης έχουν φτιαχτεί αρκετές functions που βασίζονται στο ότι θα δώσεις date για να σου έχουν έτοιμη λειτουργικότητα. Αν πας σε 3 πεδία όλη αυτή την έτοιμη λειτουργικότητα πρέπει να την ξαναφτιάξεις μόνος σου από την αρχή.

Δαπάνησε λίγο χρόνο για να διορθώσεις τη βάση σου χρησιμοποιώντας date όπως προτείνει και ο korgr.

Απάντηση

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

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

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