asp vbscript date format

Πληροφορίες σχετικές με την ASP, ASP.NET και με τις εφαρμογές που είναι γραμμένες με αυτήν.

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

Απάντηση
ttt2005
Δημοσιεύσεις: 42
Εγγραφή: 07 Φεβ 2005 03:43

asp vbscript date format

Δημοσίευση από ttt2005 » 11 Μαρ 2005 11:28

στον sql server θα ηθελα η ημερομηνια να αποθηκευεται ως εξης:

11/3/2005 12:00:00 μμ

Άβαταρ μέλους
tsiger
Honorary Member
Δημοσιεύσεις: 1431
Εγγραφή: 11 Νοέμ 2002 13:40
Τοποθεσία: Thessaloniki Observation Center
Επικοινωνία:

asp vbscript date format

Δημοσίευση από tsiger » 11 Μαρ 2005 11:32

http://www.ilovejackdaniels.com/asp/vbs ... functions/

google search term: vbscript date format (1o apotelesma)

ttt2005
Δημοσιεύσεις: 42
Εγγραφή: 07 Φεβ 2005 03:43

asp vbscript date format

Δημοσίευση από ttt2005 » 11 Μαρ 2005 14:47

εχω βαλει την συναρτηση <%= date %> .

ενω ο browser εμφανιζει σωστα την ημερομηνια ημερα/μηνας/ετος

στον sql server το αποθηκευει ως μηνα/ημερα/ετος

πως λυνεται το προβλημα?

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27626
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

asp vbscript date format

Δημοσίευση από cordis » 11 Μαρ 2005 14:51

με ποιον τρόπο είδες ότι ο sql server τα αποθηκεύει έτσι;
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

ttt2005
Δημοσιεύσεις: 42
Εγγραφή: 07 Φεβ 2005 03:43

asp vbscript date format

Δημοσίευση από ttt2005 » 11 Μαρ 2005 16:05

εχω μια asp σελιδα και εβαλα την συναρτηση <%= date() %> . η αποθηκευση της εγγραφης στον sql server γινεται αλλα αποθηκευει μηνα/ημερομηνια/ετος


μπηκα στην βαση και ανοιξα τον πινακα

οταν κανω μεσω browser κανω εμφανιση ολων των εγγραφων παλι η ημερομηνια ειναι μηνας/ημερα/ετος

υπαρχει τροπος να αποθηκευω μερα/μηνα/ετος?

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

asp vbscript date format

Δημοσίευση από skeftomilos » 13 Μαρ 2005 08:33

Ο SQL Server δεν αποθηκεύει εσωτερικά τις ημερομηνίες με τη μορφή χρόνος-μήνας-μέρα ή οτιδήποτε άλλο αλλά με την παρακάτω ειδική μορφή (από το Help του SQL Server):
Values with the datetime data type are stored internally by Microsoft SQL Server as two 4-byte integers. The first 4 bytes store the number of days before or after the base date, January 1, 1900. The base date is the system reference date. Values for datetime earlier than January 1, 1753, are not permitted. The other 4 bytes store the time of day represented as the number of milliseconds after midnight.
Η εξαγωγή αυτής της εσωτερικής αναπαράστασης σε εμφανίσιμη μορφή είναι μάλλον απλή υπόθεση. Βασικά το μόνο που χρειάζεται να κάνεις είναι να ορίσεις το LCID στην αρχή της κάθε asp σελίδας, και ακόμα κι αυτό είναι περιττό αν τη σελίδα σου φιλοξενεί ελληνικός server. Η εισαγωγή ημερομηνίας είναι αντίθετα πιο tricky υπόθεση. Βασικά αν επιτρέπεις στο χρήστη να εισάγει την ημερομηνία σε ένα textbox, θα πρέπει να γράψεις πολύ έξυπνο κώδικα που να αναλύει το string και να μαντεύει την ημερομηνία από τους διάφορους τρόπους που μπορεί να την έχει γράψει ο χρήστης (25/3/2005, 25-03-05, 250305 κ.λπ.). Αυτός είναι και ο λόγος που ο πιο διαδεδομένος τρόπος εισαγωγής ημερομηνίας είναι τρία διαφορετικά πεδία: ημέρα - μήνας - χρόνος. Και τα τρία μπορούν να είναι είτε απλά textbox είτε combobox με όλες τις πιθανές τιμές, είναι θέμα γούστου. Από κει και πέρα η σύνθεση της ημερομηνίας είναι τόσο απλή όσο η κλήση της συνάρτησης DateSerial (VBScript). Πρόσεχε μόνο γιατί αυτή η συνάρτηση δε βγάζει λάθος για παλαβές τιμές αλλά απλά δίνει παραβά αποτελέσματα. Από το Help της VBScript:
DateSerial(year, month, day)
Returns a Variant of subtype Date for a specified year, month, and day.

When any argument exceeds the accepted range for that argument, it increments to the next larger unit as appropriate. For example, if you specify 35 days, it is evaluated as one month and some number of days, depending on where in the year it is applied. However, if any single argument is outside the range -32,768 to 32,767, or if the date specified by the three arguments, either directly or by expression, falls outside the acceptable range of dates, an error occurs.
Γι αυτό ίσως πρέπει μετά να χρησιμοποιήσεις και την DatePart για να αποκλείσεις αυτή την πιθανότητα.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27626
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

asp vbscript date format

Δημοσίευση από cordis » 13 Μαρ 2005 16:38

ακριβώς.. ο SQL server καταχωρεί τις ημερομηνίες όπως του γουστάρει (με δικό του τρόπο) τώρα το πως θα εμφανιστούν σε ένα select εξαρτάτε από τα locales και τις επιλογές που κάνει αυτός που γράφει το select... ;)
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

ttt2005
Δημοσιεύσεις: 42
Εγγραφή: 07 Φεβ 2005 03:43

asp vbscript date format

Δημοσίευση από ttt2005 » 15 Μαρ 2005 09:35

προσπαθω τοσες μερες να αποθηκευσω την ημερομηνια στον sql server ως ημερα/μηνα/ετος π.χ 30/3/05

ενω στον internet explorer φαινεται ετσι ημερα/μηνα/ετος ΔΕΝ αποθηκευεται ετσι.

πως μπορω να το πετυχω αυτο?





σημερα που ειναι 15/3/2005 μου βγαινει στον internet explorer το εξης σφαλμα

Microsoft OLE DB Provider for SQL Server σφάλμα '80040e07'

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

αν βαλω 1/3/2005 η εγγραφη αποθηκευεται

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27626
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

asp vbscript date format

Δημοσίευση από cordis » 15 Μαρ 2005 13:30

Πρέπει να του την δίνεις ΜΜ/ΗΗ/ΧΧΧΧ αλλιώς δε θα μπορέσεις να κάνεις δουλειά... το πως θα καταχωρηθεί δεν έχει σχέση με το πως θα εμφανιστεί... διάβασε ξανά τα παραπάνω που σου γράψαμε...
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

asp vbscript date format

Δημοσίευση από skeftomilos » 15 Μαρ 2005 18:05

Υποθέτω ότι καταχωρείς την ημερομηνία συνθέτοντας το SQL query με string concatenation. Αυτή η μέθοδος είναι προβληματική. Εκτός από ημερομηνίες θα έχεις πρόβλημα και με τους δεκαδικούς αριθμούς καθώς και προβλήματα security (SQL injection). Η σωστή λύση είναι η χρήση αντικειμένων ADODB.Parameter.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

ttt2005
Δημοσιεύσεις: 42
Εγγραφή: 07 Φεβ 2005 03:43

asp vbscript date format

Δημοσίευση από ttt2005 » 17 Μαρ 2005 10:52

εχω βαλει στην αρχη της σελιδας
<%session.lcid=1033%>


εχω ενα <input name="dat" type="text" class="PlainText" id="dat" value="<%=date()%>" size="10">

η εμφανιση στην σελιδα γινεται ως μηνας/ημερομηνια/ετος αλλα στον sql server την αποθηκευει ως ημερομηνια/μηνας/ετος

μηπως γινεται κατι ετσι ωστε να εμφανιζεται ως ημερομηνια/μηνας/ετος και να αποθηκευεται ως ημερομηνια/μηνας/ετος

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

asp vbscript date format

Δημοσίευση από skeftomilos » 17 Μαρ 2005 20:18

Ο κωδικός 1033 αφορά τις ΗΠΑ. Το ελληνικό LCID είναι το 1032. Στην κορυφή κάθε σελίδας βάλε το εξής:

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

<%@ LCID = 1032 %>
(IIS Help) έγραψε:The LCID property specifies how dates, times, and currencies are formatted. LCIDs are not the same for each geographical locale. Some locales format dates as YY-MM-DD and some format dates as MM-DD-YYYY. The LCID property is read/write.
...
Setting Response.LCID explicitly affects a single page, where Session.LCID affects all responses in a session.
...
Response.LCID is set by @LCID, if @LCID is present in the page.
...
If the locale is set in a page, and the codepage is set to display the characters properly, then Response.Charset should also be set. The codepage value tells IIS how to encode the data when building the response, and the charset value tells the browser how to decode the data when displaying the response.
Δες και το θέμα ημερομηνια σε μορφή ημερα/μηνας/ετος.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Απάντηση

Επιστροφή στο “ASP, ASP.NET”

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

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