slevinkelevra Δημοσ. 16 Δεκεμβρίου 2017 Δημοσ. 16 Δεκεμβρίου 2017 Καλησπέρα Κάνω ένα project με PostgreSQL 10 και έχω κάποιες στήλες με ημερομηνίες που θέλω να είναι και προΧριστού. Απ ότι βλέπω εδώ στο Site: Documentation το minimum προΧριστού φτάνει μέχρι 4713 BC. Μπορώ να έχω μικρότερο minimum πχ να φτάνει μέχρι 7000BC ? Η πρέπει να εφαρμόσω δικιά μου λύση? Και εαν ναι, ποια προτείνετε ? Ευχαριστώ
defacer Δημοσ. 16 Δεκεμβρίου 2017 Δημοσ. 16 Δεκεμβρίου 2017 Σε κάποια φάση είχα ψάξει το συγκεκριμένο θέμα για μια πολύ ιδιαίτερη περίπτωση. Το συμπέρασμα μου μετά από μεγάλη έρευνα ήταν: 1. Δεν υπάρχει περίπτωση να γνωρίζεις οποιαδήποτε ημερομηνία χιλιάδες χρόνια πριν με ακρίβεια μέρας. Οπότε γιατί προσπαθείς να την αποθηκεύσεις με ακρίβεια μέρας; 2. Το ημερολόγιο που χρησιμοποιούμε δεν πάει πίσω τόσο μακριά και δεν είναι γραμμικό και συνεχές. Ακόμα και στην υποθετική περίπτωση που ξέρεις σίγουρα ότι κάτι έγινε την 16/12/5000 π.Χ., αυτή η πληροφορία είναι άχρηστη σε κάποιον που δεν έχει μάστερ στις ημερολογιακές πρακτικές της ανθρωπότητας. Δεν ξέρω ποιο είναι το πρόβλημα που θες να λύσεις, αλλά αμφιβάλλω ότι θα το λύσεις ουσιαστικά με τον τρόπο που λες.
slevinkelevra Δημοσ. 16 Δεκεμβρίου 2017 Μέλος Δημοσ. 16 Δεκεμβρίου 2017 Καλα, προφανως δεν μιλαμε για ακριβεια ημερας, αλλα και χρονια μονο να βαλεις, παλι date θες. Θα ειναι project με ιστορικα/πολιτισμικά στοιχεια, οπότε πρεπει να οριστουν και περιοδοι ή γεγονοτα που να εγιναν και πιο πριν, πχ το 4900 μπορει να έγινε μια μαχη. Φαντασου τωρα να εισαι ιστορικος, να πας να συμπληρωσεις μια φορμα, να βαλεις 4900πΧ και να σου πεταξει error! Ε δεν γινετε.
defacer Δημοσ. 17 Δεκεμβρίου 2017 Δημοσ. 17 Δεκεμβρίου 2017 Αν είσαι οκ με το να βάλεις μόνο έτος γιατί θες date? Ένα int σου κάνει. Επίσης, η αρχή της καταγεγραμμένης ιστορίας συμπίπτει με την ανακάλυψη της γραφής, κάπου γύρω στο 3500 πΧ. Πριν από αυτό ούτε γι αστείο δε μπορείς να ξέρεις χρονολογίες έστω και με ακρίβεια έτους. Ξαναλέω λοιπόν δες πιο προσεκτικά αν το πρόβλημα που προσπαθείς να λύσεις υπάρχει.
slevinkelevra Δημοσ. 17 Δεκεμβρίου 2017 Μέλος Δημοσ. 17 Δεκεμβρίου 2017 Λοιπον, πάρε popcorn. Αν εχεις date ή πιο συγκεκριμένα timestamp with time zone, μπορεις να κανεις extract το century αυτοματα. Οποτε ειναι ολα λιγο πιο αυτοματα και με types που ειναι φτιαγμενα να εκφραζουν ημερομηνιες. Δηλαδη για να περαστει μια ιστορικη περιοδος, περναει ο admin τη min-max ημερομηνια, εσυ το σωζεις ως timestamptz range και μετα ο κωδικας αναλαμβανει να βρει τους αιωνες που ξεκινα και τελειωνει αυτη η περιοδος, αυτοματα. Ετσι ο admin δεν κουραζεται να εισαγει τα παντα. Οταν ενας χρηστης παει να εισαγει πχ ενα κτιριο και στο πεδιο "χρονολογια κατασκευης" βαλει ειτε χρονιά ειτε αιωνα, εσυ εχεις ηδη τα range και αναλογα με το τι εχει εισαγει, μπορεις να τσεκαρεις τι ειναι μεσα στα range και να του συμπληρωσεις αυτοματα οτι ανηκει σε αυτη την περιοδο. Ετσι ο χρηστης δεν κουραζεται να εισαγει τα παντα. Ολα τα παραπανω για μΧ. Για πΧ , αμα δεν εχεις αυτη τη δυνατοτητα φτιαχνεις εναν δευτερο πινακα "erasBC" ξερω γω και περνας μονο χρονιες και αιωνες σε μορφη int και int range. Η μπορεις να τα βαζεις ολα σε μΧ να εχεις κανονικα τα timestamp with time zone με τα timezone range σου και να εχεις ενα extra πεδιο boolean (true για μΧ, false για πΧ) και οταν υπολογιζεις πΧ αιωνες να αφαιρεις -1 πριν αποθηκευσεις. Overkill? Θα μου πεις, βολεψου με ints ξερω γω. Οσο για την ιστορια, μπορει ο αλλος να θελει να βαλει το 5000πΧ επειδη εγινε χρονολογηση με ανθρακα ξερω γω. Trust me δε μπορω να το περιορισω.
k33theod Δημοσ. 17 Δεκεμβρίου 2017 Δημοσ. 17 Δεκεμβρίου 2017 Προσπαθώ να ρίξω μια ιδέα χωρίς να το κατέχω και πολύ το θέμα κάνε ένα πρόσθετο πεδίο που θα κρατάει ώς ακέραιο ότι δεν χωράει στη βάση Άν η ημερομηνία σου είναι μικρότερη από το 4.713(χωράει δηλαδή στη βάση) βάλε την στο κανονικό πεδίο, αν είναι μεγαλύτερη βάλε στο πεδίο όλα τα στοιχεία και έτος 4713 και στο 2ο πεδίο (έτος - 4713) Στη σύνθεση τώρα όταν το 2ο πεδίο είναι κενό επιστρέφεις το 1ο, όταν είναι συμπληρωμένο επιστρέφεις ότι έχει το 1ο με έτος 4713 + έτος 2ου πεδίου Μπορεί επίσης το πρόσθετο πεδίο αντί ακέραιος να είναι και αυτό date time απλά θα έχει πάντα 1η ιαν ώρα 00 και κάποιο έτος Άλλο που μπορείς να κάνεις είναι να προσπαθήσεις να επικοινωνήσεις με την κοινότητα και πιστεύω θα σου απαντήσουν
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα