در جدول Orders با ستون OrderID (int) و OrderDate (varchar) که تاریخ‌ها به صورت 'YYYYMMDD' یا 'MM/DD/YYYY' ذخیره شده‌اند، یک پرس‌وجو بنویسید که OrderID و دو ستون نشان‌دهنده تاریخ تبدیل‌شده — یکی با CAST و دیگری با CONVERT (استفاده از style مناسب برای فرمت MM/DD/YYYY) — را نمایش دهد و فقط سطرهایی که تاریخ معتبر دارند را برگرداند.

4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:20

0.0

برای حل این سوال از توابع تبدیل SQL استفاده کنید: CAST(OrderDate AS date) برای تبدیل استاندارد و CONVERT(date, OrderDate, 101) برای زمانی که ورودی به صورت MM/DD/YYYY است (در SQL Server، style 112 برای YYYYMMDD کاربرد دارد). برای جلوگیری از خطا در تبدیل، می‌توانید از WHERE ISDATE(OrderDate)=1 یا از TRY_CONVERT/TRY_CAST (اگر سرور پشتیبانی کند) استفاده کنید تا سطرهای نامعتبر فیلتر شوند. نکته: CONVERT در SQL Server امکان تعیین style را می‌دهد که برای فرمت‌های تاریخ مفید است؛ CAST برای تبدیل‌های ساده‌تر و سازگاری استاندارد SQL مناسب است.

توسط پژوهشگر در 221 روز قبل ساعت 01:20
دسته بندی ها: SQL SQL for beginner
sara در 221 روز قبل ساعت 13:37

برای این سوال می‌توانید OrderID را همراه با دو ستون تاریخ تبدیل‌شده با CAST و CONVERT نمایش داده و فقط سطرهای معتبر را برگردانید. بهتر است از TRY_CONVERT یا TRY_CAST به جای ISDATE استفاده کنید تا خطاهای تبدیل در مقابل فرمت‌های نامعتبر مدیریت شوند و مقادیر نامعتبر به NULL تبدیل شوند. از آنجا که ورودی‌ها دو فرمت YYYYMMDD و MM/DD/YYYY هستند، می‌توانید از TRY_CONVERT(date, OrderDate, 112) برای YYYYMMDD و TRY_CONVERT(date, OrderDate, 101) برای MM/DD/YYYY استفاده کرده و فقط ردیف‌هایی را نگه دارید که هر دو تبدیل موفق باشند. این رویکرد هم امنیت تبدیل را افزایش می‌دهد و هم از بروز خطاهای اجرایی جلوگیری می‌کند.

گزارش

2 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری