Τί εννοείς "να μην καταχωρεί"? Έχεις μία τιμή η οποία έχει δέκατα και θέλεις να τα κόψεις? Γιατί δεν το κάνεις αυτό στον κώδικα που δημιουργεί το datetime?
Ο SQL Server 2005 δεν επιτρέπει να ορίσεις ακρίβεια στον τύπο datetime. Αυτό γίνεται στον τύπο datetime2 του SQL Server 2008 ο οποίος σου επιτρέπει να ορίσεις πόσα δεκαδικά θα κρατάει για τα δευτερόλεπτα.
Στον SQL Server 2005 θα πρέπει να χρησιμοποιήσεις διάφορα κόλπα για να πετύχεις αυτό πού θέλεις.
- Το απλούστερο είναι να περιορίζεις τα δεκαδικά στον κώδικα
- Μπορείς να βάλεις ένα INSTEAD OF trigger στον πίνακα το οποίο θα κόβει τα δεκαδικά. Είναι φασαρία, ειδικά επειδή η TSQL δεν σου δίνει κάποιο καλό τρόπο να χειριστείς τα δευτερόλεπτα. Θα πρέπει να σπάσεις την ημερομηνία με την DATEPART και να την ξαναφτιάξεις μόνο μέχρι το επίπεδο του δευτερολέπτου.
- Αν η ώρα μπαίνει μέσω της GETDATE() ως default value μπορείς να φτιάξεις ένα δικό σου function το οποίο θα σπάει την ημερομηνία όπως παραπάνω και να το χρησιμοποιήσεις αντί για την GetDate().
Το ίδιο μπορείς να κάνεις αν η ώρα μπαίνει μέσω κάποιου stored procedure
Αν βέβαια μπορείς να πεις ότι θα χρησιμοποιήσεις SQL Server 2008, τα προβλήματα λύνονται αμέσως
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos