<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Πρώτα Βήματα - Βάσεις δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/73/ShowForum.aspx</link><description>Για όσους κάνουν τα πρώτα τους βήματα στην Microsoft Access ή τον SQL Server, ή γενικότερα στη θεωρία βάσεων δεδομένων.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: SQL &amp; charIndex + substring</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/43475.aspx</link><pubDate>Wed, 16 Jul 2008 08:05:54 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:43475</guid><dc:creator>Bill </dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/43475.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=43475</wfw:commentRss><description>&lt;P&gt;Σωστός το απλούστερο είναι να κάνω απλα το πεδίο datetime όπως και στην αρχή αυτό έκανα.Αλλά δεν είμαι σίγουρος για το format του πεδίου μου μπορεί να γίνει (χεράτα) μία λάθος καταχώρηση και αντί για '/' να βάλει '.' ή '-' πχ (12-3-2008) ή κατι τελείος λάθος...&amp;nbsp;&amp;nbsp;όπως και υπήρχε και μου πέταγε&amp;nbsp;exception&amp;nbsp; η εφαρμογή "cannot convert string format to datetime" &amp;nbsp;τέτοια καταχώρηση και τελικά αναγκάστικα να παίξω με το string.Και πάλι το ελέγχο με την patindex να κάνει την μετατροπή μόνο με το συγκεκριμένο format.&lt;/P&gt;</description></item><item><title>Απ: SQL &amp; charIndex + substring</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/43474.aspx</link><pubDate>Wed, 16 Jul 2008 07:35:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:43474</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/43474.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=43474</wfw:commentRss><description>&lt;P&gt;Δεν μπορώ να πω ότι καταλαβαίνω τί θέλεις να κάνεις. Καταρχήν, γιατί δεν μετατρέπεις απλά το πεδίο σε datetime? Αυτή είναι η απλούστερη και ασφαλέστερη λύση. Το να "λύνεις" ένα πρόβλημα με πατέντες πολλαπλασιάζει γεωμετρικά τα προβλήματα, δεν τα μειώνει ενώ το κόστος της διόρθωσης του προβλήματος αυξάνεται επίσης γεωμετρικά. &lt;/P&gt;
&lt;P&gt;Αν είσαι σίγουρος για το format του πεδίου σου πάντως, η &lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;convert&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;datetime&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#ff0000 size=2&gt;'03/01/2008'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;103&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;) &lt;FONT color=#000000&gt;αρκεί για να μετατρέψει το πεδίο από character σε datetime και να κάνεις sort. Από τη στιγμή που η τιμή του πεδίου έχει ήδη μετατραπεί σε datetime, δεν υπάρχει καμμία περίπτωση να μπλεχτούν ημέρες με μήνες. Άσχετα από το τί locale και collation χρησιμοποιείς, οι η &lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;convert&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;datetime&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#ff0000 size=2&gt;'03/01/2008'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;103&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;), &lt;FONT color=#000000&gt;η &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;convert&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;datetime&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#ff0000 size=2&gt;'03/1/2008'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt;103&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;), &lt;FONT color=#000000&gt;η &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;convert&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;datetime&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#ff0000 size=2&gt;'3/01/2008'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt;103&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;) και η &lt;FONT color=#000000&gt;η &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;convert&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;datetime&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#ff0000 size=2&gt;'3/1/2008'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt;103&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;) &lt;FONT color=#000000&gt;θα σου γυρίσουν ΠΑΝΤΑ 3 Ιανουαρίου 2008. Δεν υπάρχει λόγος να κάνεις δύο φορές convert&amp;nbsp; ούτε τόση φασαρία με τα substring.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;</description></item><item><title>SQL &amp; charIndex + substring</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/43470.aspx</link><pubDate>Wed, 16 Jul 2008 02:45:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:43470</guid><dc:creator>Bill </dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/43470.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=43470</wfw:commentRss><description>&lt;P&gt;Σε ένα πίνακα έχω ένα πεδίο τύπου string το οπόιο (αντί να ήταν Datetime κατά την αποψή μου) αποθηκεύει ημερομηνίες με τις παρακάτω πιθανές τιμές :&amp;nbsp; &amp;nbsp;'10/12/2008'&amp;nbsp; ή '1/2/2008' ή '12/3/2008'&amp;nbsp; ή '1/11/2008' γενικά : dd/mm/yyyy or d/m/yyyy,dd/m/yyyy,d/mm/yyyy δηλαδή με λίγα λόγια η καταχωρήσεις μπορεί κάθε φορά να έχουνε 4 πιθανές μορφές. Ήθελα να κάνω Ordering με βάση την ημερομηνία το πεδίο θυμίζω δεν είναι date έτσι σκέφτηκα τις παρακάτω λύσεις : &lt;/P&gt;
&lt;P&gt;Αρχικά σκέφτηκα απλά να κάνω το πεδίο από string σε datetime ως εξής : cast(convert(datetime,mystring,103) as datetime) as mydates&lt;/P&gt;
&lt;P&gt;Τελικά για λόγους ασφαλείας και γενικά πιο safe επέλεξα να κάνω απλά πρώτα το string&amp;nbsp; ως &lt;STRONG&gt;yyyymmdd&lt;/STRONG&gt; και μετά να κάνω ordering χωρίς να αλλάξω τον τύπο του πεδίου και γενικά να γλιτώσω πιθανών λάθος καταχωρήσεις.... και έκανα τα παρακάτω&lt;/P&gt;
&lt;P&gt;case when patindex('%/%/%',mystring)&amp;gt;0 then substring(mystring,charindex('/',mystring,charindex('/',mystring)+1)+1,4) + Replicate(0,2 - len(substring(mystring,charindex('/',mystring)+1,charindex('/',mystring,charindex('/',mystring)+1) - charindex('/',mystring) -1))) + substring(mystring,charindex('/',mystring)+1,charindex('/',mystring,charindex('/',mystring)+1) - charindex('/',mystring) -1) +&lt;BR&gt;&amp;nbsp;+Replicate(0,2 -len(substring(mystring,1,charindex('/',mystring) -1)))+substring(mystring,1,charindex('/',mystring) -1)&lt;BR&gt;&amp;nbsp; else mystring end as mydates&lt;/P&gt;
&lt;P&gt;Ναιιι έκανα όλο αυτό και το έβαλα μέσα σε patindex ώστε να κάνει μόνο όσα έχουνε το παραπάνω φορμάτ xx/xx/xxxx αν δεν έχει απλά το αφήνει όπως ήταν!&lt;/P&gt;
&lt;P&gt;Αυτό που θέλω να ρωτήσω είναι αν υπάρχει άλλο τρόπος πιο απλός ? πιο safe ? γιατί με παίδεψε μέχρι να βρώ τα κατάλληλα charindex ώστε να τα κόβω κάθε φορά με τη substring....&lt;/P&gt;
&lt;P&gt;Ευχαριστώ ! &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-10.gif" alt="Embarrassed" /&gt;&lt;/P&gt;</description></item></channel></rss>