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

08/02/2011

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

שייך לקטגוריה: 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 של התגובות על הרשומה הזו טרקבאק קישור

כתיבת תגובה

Fill in your details below or click an icon to log in:

WordPress.com Logo

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

Twitter picture

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

Facebook photo

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

Connecting to %s

ערכת עיצוב: Shocking Blue Green. בלוג בוורדפרס.קום.

Follow

Get every new post delivered to your Inbox.

הצטרפו אל 25 שכבר עוקבים אחריו