This is a mirror of official site: http://jasper-net.blogspot.com/

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

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

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

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

Select * From sys.sysLanguages;

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

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

Set Language Francais;

Select  Cast(N'fevr 8 2011' As DateTime),
       Cast(N'fevr 8 2011' As DateTime),
       Cast(N'fevrier 8 2011' As DateTime),
       Cast(N'fevrier 2011 8' As DateTime),
       Cast(N'8 fevrier 2011' As DateTime),
       Cast(N'8 2011 fevrier' As DateTime),
       Cast(N'2011 8 fevrier' As DateTime),
       Cast(N'2011 fevrier 8' As DateTime),
       Cast(N'fevr 8 2011' As DateTime),
       Cast(N'fevr 2011 8' As DateTime),
       Cast(N'8 fevr 2011' As DateTime),
       Cast(N'8 2011 fevr' As DateTime),
       Cast(N'2011 8 fevr' As DateTime),
       Cast(N'2011 fevr 8' As DateTime),
       Cast(N'2011-fevr-8' As DateTime);


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

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

Read more: גרי רשף

Posted via email from Jasper-net

0 comments: