View Full Version : سوال: cast
ehsan_wwe
پنج شنبه 24 دی 1388, 09:25 صبح
با سلام
من میخوام 1 متغییر varchar به datetime تبدیل کنم
CAST(@InTarikheSodor AS DateTime)
مینویسم ولی بهم میگه
syntax
اشتباه
میشه لطفا راهنماییم کنید
و 1 سوال دیگه هم داشتم
وقتی تابعcast اونو تبدیل کرد دوباره تو خود متغییر اونو میریزه؟
AminSobati
پنج شنبه 24 دی 1388, 10:17 صبح
سلام،
این یک مثال:
declare @x nvarchar(20)
set @x='1999-1-1'
select CAST(@x as datetime)
شاید تاریخ شما شمسی هست؟ تاریخ شمسی در محدوده datetime نمیگنجه.
تابع Cast مجددا به شما خروجی میده یعنی در همون متغیر نمیریزه
bad_boy_2007
جمعه 25 دی 1388, 22:31 عصر
declare @x nvarchar(20)
set @x='1999-1-1'
select CAST(@x as datetime)
یک سوال ، تفاوت کد فوق با کد زیر چیست و کدامیک سریعتر اجرا میگردد ؟
declare @x nvarchar(20)
set @x='1999-1-1'
select Convert(Datetime,@x) as datetime
AminSobati
شنبه 26 دی 1388, 20:35 عصر
به نظر میرسه دو بار دارین به datetime تبدیل میکنین
bad_boy_2007
شنبه 26 دی 1388, 22:04 عصر
سلام مجدد
نه اینطور نیست ، فکر میکنم نام مستعار بدی انتخاب کده ام . کوئری دوم که من در تمام موارد از این روش استفاده میکنم این است :
declare @x nvarchar(20)
set @x='1999-1-1'
select Convert(Datetime,@x) as dt
و حال سوال من اینست که کدام روش بهتر است و چرا ؟
با تشکر
bad_boy_2007
دوشنبه 28 دی 1388, 19:16 عصر
من از آخر نفهمیدم کدوم روش تبدیل نوع بهتره ؟ Cast یا Convert
اونطوری که تو سایت مایکروسافت نوشته هر دو یک عمل رو انجام میدن
CAST and CONVERT provide similar functionality
ولی آخه فرقشون چیه ؟
http://msdn.microsoft.com/en-us/library/ms187928(SQL.90).aspx
bad_boy_2007
دوشنبه 28 دی 1388, 19:28 عصر
CONVERT is SQL Server specific, CAST is ANSI.
CONVERT is more flexible in that you can format dates etc. Other than that, they are pretty much the same. If you don't care about the extended features, use CAST
ANSI-SQL is more portable across database platforms. So if you ever wanted to use the query on Orcale, DB2, etc. The ANSI version is more likely to work without changes
Convert has a style parameter for date to string conversions.
http://stackoverflow.com/questions/707335/t-sql-cast-versus-convert
یه چیزایی فهمیدم ولی این مورد آخری رو درست و حسابی نفهمیدم ، ظاهرا برتری Convert نسبت به Cast قابلیت انعطافش در کار با تاریخ است ، حالا این انعطاف پذیری دقیقا چیه ؟ چه جور تبدیلاتی با Convert انجام میشه که با Cast نمیشه ؟
AminSobati
دوشنبه 28 دی 1388, 19:37 عصر
سلام دوست عزیزم،
حق با شماست، خطای دید باعث شد تصور کنم دو بار تبدیل انجام میدین!
و اما در مورد سوال اصلی، باید عرض کنم تفاوتی نداره از لحاظ سرعت، CAST یا CONVERT در این مورد یکسان هستند
محمد سلیم آبادی
چهارشنبه 30 دی 1388, 01:55 صبح
چه جور تبدیلاتی با Convert انجام میشه که با Cast نمیشه ؟
تابع Convert دارای یک امکانی به نام style است که انعطاف پذیری تبدیل را افزایش می دهد. مثلا style های مربوط به تاریخ زمان در نمایش تاریخ در انواع فرمت های مورد استفاده قرار می گیرد. و در مورد نوع money مثلا شما می توانین مقادیر را سه رقم سه رقم با کاما از هم تفکیک کنین.
bad_boy_2007
چهارشنبه 30 دی 1388, 22:58 عصر
ممنون جالب بود فکر میکنم واسه بعضی جا ها به دردم بخوره بخصوص فرمت کارنسی با کاما .
میشه یک نمونه مثال بزارید ؟
محمد سلیم آبادی
پنج شنبه 01 بهمن 1388, 05:53 صبح
money:
http://www.barnamenevis.org/forum/showpost.php?p=863078&postcount=6
date time:
--U.S.
select CONVERT(varchar, getdate(), 101) --01/23/2010
--ANSI
select CONVERT(varchar, getdate(), 102) --2010.01.23
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.