סינטקס SQL

I r i s I r i s

New member
סינטקס SQL

שלום, מבקשת להתייעץ לגבי טסט שהבן שלי עבר במבחן , הנה:
===============
בהנחה שהפורמט לתאריך הוא DD-MM-YYYY הביטוי החסר הוא
א) '1977'
ב) 1977
ג) 01-01-1977
ד) '01-01-1977'
==============
 

pitoach

New member
אין לי מושג אפילו מה זה "ביטוי חסר"

בכל מקרה את צריכה להבין כיצד עובדים תאריכים

1. תאריך אפס מבחינת השרת הוא:
1900-01-01 00:00:00.000
2. כאשר את עושה שימוש במספר בלי מרחאות כמו ל משל 1977 אז ברירת המחדל זה להשתמש בערך זה כדי להציג ימים שעברו מתאריך האפס. לכן :
אם תנסי למצוא את התאריך של 1977 תקבלי 1977 ימים אחרי תאריך האפס וזה אומר
1905-06-01 00:00:00.000
זה בדיוק זהה לחישוב של:
select DATEADD (day,0,1977)
לעומת זאת אם תנסי למצוא את התאריך של מספר שלילי כמו מינוס 1977 אז תקבלי 1977 ימי לפני תאריך האפס ז"א
1894-08-03 00:00:00.000
3. כאשר את רושמת מספרים עם סימון מינוס בינהם השרת אינו מבין שהתכוונת לתאריך בפורמט מסויים אלא מבצע חישוב על מספרים! לכן מבחינת השרת 01-01-1977 הוא בעצם המספר מינוס 1977 בלי קשר לתאריך.
select 01-01-1977 -- result: -1977
*** מסעיפים 1 עד 3 נובע שהתאריך של 01-01-1977 יהיה פשוט 1977 ימים לפני תאריך האפס ולכן נקבל
1894-08-03 00:00:00.000
4. כאשר יש מרחאות א מדובר בטקסט. השרת יודע לבצע פעולה של המרה מרומזת לפי הפורמט של התאריך בו אנחנו נעובדים. רק כאן נכנס נושא הפורמט של התאריך במקרה הנוכחי.
במקרה של מספר כמו 1977 במרחאות, השרת יזהה שזה השנה ולכן מבחינתו מדובר על
1977-01-01 00:00:00.000
במקרה שהפורמט מתאים לורמט שהוגדר בו אנחנו עובדים אז התרגום יהיה בהתאם
 

I r i s I r i s

New member
תודה השכלתי. אז אם הבנתי נכון

התשובה ג' היא נכונה?
הביטוי החסר היה במשפט
Where birthday>...............
 

pitoach

New member
למה?!?

כל התשובות חוקיות ומכיוון שאין לנו מושג על מי מדובר ומתי יום ההולדת שלו, אז למה להגביל לתאריך מסויים?!?
* אני לא יודע מה הניסוח המקורי של השאלה. גם עתה את מוסיפה לנו ]רטים נוספים על ההודעה המקורית שלך. אבל על פני השטח הנתונים שיש לנו, נראה שזו שאלה גרועה גרועה מאוד (כאמור כל התשובות חוקיות, תבחרי את התאריך שנראה לך הכי "מתאים"), ואני בטוחשבכל תאריך כזה נולדו כמה אלפי אנשים
 

I r i s I r i s

New member
עכשיו אני לא מבינה

הרי אמור לנו שהנחה היא שהפורמט לתאריך הוא DD-MM-YYYY
אז א' וב' לא רלוונטיים לא ?
לגבי ד' - המרכעות מתאימות לטקסט לא כך?
נשאר ג' - היה לי ספק שכותבים תאריך ללא סולמיות או כל סימן אחר

סליחה שלא ניסחתי מלכתחילה מדוייק יותר ותודה על התשובה
 

lj101

New member
התשובה היא ד' כי...

בהנחה שפרמ תאריך הוא : dd-mm-yyyy אז החיפוש ייארך באופן הבא :
where date='01-01-1977'
 

lj101

New member
SQL SERVER לא עובד עם מרכאות שזה "

יש מספר סביבות שבהם שפת הSQL עובדת לדוגמה באקסס את הטקסט בקריטריונים השונים שמים "מרכאות" ואת התאריך שמים #01/01/01#
ב-SQL SERVER משתמשים בקריטריונים לתאריך וטקסט בגרש אחד מימין ואחד משמאל... השרת יודע איך לזהות בקריטריונים מבנה תאריך וטקסט....

אם אני טועה, אני מאמין שהחברים יתקנו אותי.
 

lj101

New member
נחמד מאוד...., זה פותר לא מעט בעיות עם מחרוזות עם גרש בעיקר.

בשמות משפחה...

תודה
 

pitoach

New member
אני מאוד מאוד מאוד.... מאוד מאוד... מאוד ... ממליץ לא להשתמש

בזה ולשמור על עבודה בברירת המחדל מסיבות שונות, אלא אם חייבים.
 

pitoach

New member
תאריך הוא לא בגרשיים ולא במספר שלם בעקרון

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

pitoach

New member
האתר לא נותן לי לערוך את ההודעה אז הנה תיקון כתיב ומשפט נוסף

תאריך הוא לא בגרשיים ולא במספר שלם בעקרון
תאריך הוא תאריך, מספר שלם INT הוא מספר שלם INT, וטקסט הוא טקסט. אלו סוגים שונים לחלוטין בעקרון
לא סתם רשמתי למעלה בהודעה את המילה המרה מרומזת. השרת מבצע המרה מרומזת בין אלמנטים כאשר הוא מוצא לנכון שהם מתאימים לכך. כל האפשרויות שכתבת מעל הם תקינים ויתנו תוצאה טובה של תאריך. כתבתי לך למעלה את ההסבר כיצד השרת מבצע את ההמרה ממספר וכיצד מבצע אותה מטקסט.
* המרה מפורשת היא המרה שאנחנו מבצעים באמצעות פעולה כמו CONVERT או CAST
 

I r i s I r i s

New member
תודה שוב אבל

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

pitoach

New member
את מכירה את השאלה "מה אם לסבתא היו גלגלים"?


אני מעדיף לדון בעניינים טכניים ולא לדון בשאלות של "מה אם". מה שאני הייתי עונה למי שכתב את המבחן זה לא בהכרח מה שאת צריכה צריכה לכתוב

* צריך לזכור שיש משמעות לניסוח המדוייק של השאלה!! וכמובן ההקשר של השאלה. לפעמים כשמישהו שואל אותי כמה זה 1+2 אני עונה 3 ולפעמים אני נכנס לנושאים בתורת הקבוצות ופיזיקה קוונטית, כדי להסביר את התשובה... מה עונים לילד בן 4 ששואל מהיכן מגיעים ילדים? האם זה אותו דיון כמו זה של 2 מבוגגרים שדנים באימוץ ילד?
 

I r i s I r i s

New member
וזה למה אני לא אוהבת שאלון אמריקאי

מסכימה איתך אבל הבעיה היא שבמתכונת שהיתה להם במבחן אין הזדמנות לתורת היחסות ודיון מעמיק לעניין. תודה על העזרה!
 

lj101

New member
עוד הערה קטנה, ב-SQL חיפוש תאריכים הוא עם גרש

 

pitoach

New member
אני מקווה שאתם מגיעעים ב 19 לחודש להרצאה במיקרוסופט!

כרגע סיימתי לכתוב את הדמו האחרון שאני מציג
 
למעלה