מה ההבדל בין CAST ל CONVERT ?

גרי רשף

New member
פעם השתמשו ב-Convert והיום ב-Cast

כללית הן עושות אותו הדבר, אבל למיטב ידיעתי יש להעדיף את ה-Cast שזו הפונקציה המעודכנת שתיתמך לאורך זמן.
 
אתה בטוח בזה?

לא מצאתי מאמר, שאומר שCAST אמור להיתמך לאורך זמן ולעומת זאת convert לא תיתמך לאורך זמן. האם אתה בטוח, שזה אכן המצב? אישית זה ניראה לי קצת מוזר כי לפונצקיה convert יש יכולות, שלא קיימות בפונקציה cast. לדוגמא - הפונצקיה convert תומכת ביותר אפשרויות של פורמטים של תאריך:
--should get an error select cast ('28/07/07' as smalldatetime) go select cast ('07/28/07' as smalldatetime) go select convert (smalldatetime, '28/07/07', 3) go select convert (smalldatetime, '07/28/07', 1)​
כפי, שניתן לראות הפונצקיה cast לא יכולה לעבוד עם תאריך בפורמט אירופאי. לעומת זאת הפונקציה convert יכולה לעבוד עם פורמט אירופאי
 

גרי רשף

New member
מזל שאני מתנסח בזהירות מבחינה משפטית..

ב-BOL כתוב ש-CAST and CONVERT provide similar functionality, ויש להן תיעוד משותף. למיטב זכרוני Cast הופיעה מאוחר יותר (החל מ-2000?) ואולי זה גרם לי לחשוב שהיא תחליף את Convert. אני זוכר מאחד ממפגשי פורום משתמשי SQL שראינו ששתיהן מפעילות אותה פונקציית מערכת מאחורי הקלעים. אשאל אם כך אותך- אתה בטוח שיש ל-Convert יכולות שאין ל-Cast?
 
אני בטוח, שלפונצקיה

convert יש יכולות שלפונקציה cast אין. במסר הקודם שלי הראיתי, שפונקציה convert יכולה באותו session ולאותו login לפרש תאריך בפורמט אירופאי ואמריקאי. לעומת זאת הפונקציה cast יכולה לעבוד עם פורמט אמריקאי או עם פורמט אירופאי. בנוסף בBOL כתוב גם המשפט הבא:
If you want Transact-SQL program code to comply with SQL-92, use CAST instead of CONVERT. Use CONVERT instead of CAST to take advantage of the functionality in CONVERT.​
נראה לי, שניתן להסיק מהמשפט הזה, שלconvert יש יכולות, שלא קיימות בפונקציה cast.
 

גרי רשף

New member
הפתרונות למיקרוסופט..

..המשפטים שאתה ואני ציטטנו מה-BOL סותרים לכאורה זה את זה.
 
למעלה