در جدول 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 مناسب است.
2 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای این سوال میتوانید 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 استفاده کرده و فقط ردیفهایی را نگه دارید که هر دو تبدیل موفق باشند. این رویکرد هم امنیت تبدیل را افزایش میدهد و هم از بروز خطاهای اجرایی جلوگیری میکند.
گزارش