הבלוג של גרי רשף

08/02/2011

קליטת תאריכים מתוך טקסט

Filed under: Uncategorized — תגיות: , , , — גרי רשף @ 22:28

בעבר כתבתי על כך שראוי שתאריכים יכתבו בצורה סטנדרטית, למשל התאריך של היום ראוי שיכתב בתור '20110208' כדי שלא יהיה ספק שמדובר בשמונה בפברואר ולא בשניים באוגוסט.

אם לעומת זאת נכתוב '2010-02-08' בשפות שונות הוא יובן באופנים שונים, כאשר השפה היא בראש ובראשונה שפת ברירת המחדל של השרת, מעליה שפת ברירת המחדל של ה-Login (אם היא שונה מזו של השרת- היא גוברת עליה), ומעל כולם השפה שהגדרנו ל-Session שפתחנו (בדרך כלל כולן זהות לזו של השרת ואין כל בעייה).

יחד עם זאת יש מקרים בהם התאריכים מתקבלים בצורה לא סטנדרטית, ו-SQL Server מגלה גמישות רבה בנכונותו לתרגם אותם לצורה תקנית; וזה שימושי בעיקר כשהנתונים מתקבלים ממערכות חיצוניות.

Select * From sys.sysLanguages;

clip_image002

טבלת sys.SysLanguages מציגה את ההגדרות של השפות השונות שנועדו לזהות שמות מקוצרים ומלאים של ימים וחודשים.

שפת ברירת המחדל במקומנו היא בדרך כלל US_English, אבל נניח שקיבלנו קובץ טקסט הכתוב בצרפתית דווקא:

Set Language Français;

Select  Cast(N'févr 8 2011' As DateTime),

        Cast(N'févr 8 2011' As DateTime),

        Cast(N'février 8 2011' As DateTime),

        Cast(N'février 2011 8' As DateTime),

        Cast(N'8 février 2011' As DateTime),

        Cast(N'8 2011 février' As DateTime),

        Cast(N'2011 8 février' As DateTime),

        Cast(N'2011 février 8' As DateTime),

        Cast(N'févr 8 2011' As DateTime),

        Cast(N'févr 2011 8' As DateTime),

        Cast(N'8 févr 2011' As DateTime),

        Cast(N'8 2011 févr' As DateTime),

        Cast(N'2011 8 févr' As DateTime),

        Cast(N'2011 févr 8' As DateTime),

        Cast(N'2011-févr-8' As DateTime);

שימו לב שאת כל המחרוזות האלו המערכת תצליח לתרגם נכון לשמונה בפברואר,

כאשר ניתן על פי הצורך לציין גם חלקי יממה (שעות, דקות, AM/PM..).

כמובן שיש למערכת גם מגבלות, למשל אם נכתוב fevrier במקום février נקבל הודעת שגיאה.

לסיום נחזיר את שפת ברירת המחדל המקורית:

Set Language US_English;

מודעות פרסומת

להגיב »

עדיין אין תגובות.

RSS feed for comments on this post. TrackBack URI

להשאיר תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

יצירה של אתר חינמי או בלוג ב־WordPress.com.

%d בלוגרים אהבו את זה: