خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


افزودن AM/PM به زمان در SQL Server

افزودن AM/PM به زمان در SQL Server
در SQL Server می توانید از تابع FORMAT برای فرمت کردن دیتاتایپ time استفاده کنید. با این حال ، اگر شما نیاز به افزودن AM / PM به زمان خود دارید، باید از دیتاتایپ دیگری استفاده کنید. دلیل آنهم این است که time بصورت 24 است و فرمت آنهم به همین صورت است. پس اگر به دنبال نمایش زمان همراه با AM/PM هستید، از روش های زیر می توانید استفاده کنید:

نرم افزار سامانه مودیان راهکار



Comparing ‘time’ with ‘datetime’

در مثال زیر، مشاهده خواهید کرد که اگر time را با AM/PM ترکیب کنید، خروجی آن چه خواهد شد.

SELECT
FORMAT(CAST('11:28:15' AS datetime), 'hh:mm tt') 'datetime',
FORMAT(CAST('11:28:15' AS time), 'hh\:mm tt') 'time';

+------------+--------+
| datetime | time |
|------------+--------|
| 11:28 AM | NULL |
+------------+--------+

همانطور که مشاهده کردید، با ترکیب Time با AM/PM خروجی Null می شود. برای اضافه کردن AM/PM به زمان از نوع Time، ابتدا باید Time ر ابه دیتاتایپ دیگری تبدیل کرده و سپس آن را format کنید. توجه داشته باشید که تابع FORMAT به هر حال نتیجه را به صورت رشته ای برمی گرداند (مگر اینکه نتیجه NULL باشد). ضمنا اگر در این فکر هستید چرا در Select دوم مثال فوق، از \ استفاده شده، جواب این است که \ برای فرار از : می باشد.

Converting ‘time’ to ‘datetime’

این مثال تقریباً مشابه مثال قبلی است ، با این تفاوت که سعی بر این شده که واقع بینانه تر جلوه داده شود. در این مثال ، یک متغیر را به عنوان از نوع "TIME" تمعرفی و سپس آن را فرمت می کنیم. قبل از فرمت کردن مجدد به عنوان "datetime" ، cast می کنیم.

DECLARE @thetime time = '11:28:15'
SELECT
FORMAT(@thetime, 'hh\:mm tt') 'time',
FORMAT(CAST(@thetime AS datetime), 'hh:mm tt') 'datetime';

+--------+------------+
| time | datetime |
|--------+------------|
| NULL | 11:28 AM |
+--------+------------+

اگر تمایل به استفاده از تابع CONVERT برای دریافت خروجی فوق دارید، بصورت زیر باید عمل کنید:

DECLARE @thetime time = '11:28:15'
SELECT
FORMAT(@thetime, 'hh\:mm tt') 'time',
FORMAT(CONVERT(datetime, @thetime), 'hh:mm tt') 'datetime';

+--------+------------+
| time | datetime |
|--------+------------|
| NULL | 11:28 AM |
+--------+------------+

یا می توانید مقدار را به یک متغیر دیگر از نوع دلخواه اختصاص دهید:

DECLARE @thetime time = '11:28:15'
DECLARE @thedatetime datetime = @thetime
SELECT
FORMAT(@thetime, 'hh\:mm tt') 'time',
FORMAT(@thedatetime, 'hh:mm tt') 'datetime';

+--------+------------+
| time | datetime |
|--------+------------|
| NULL | 11:28 AM |
+--------+------------+

Single Letter AM/PM Designator

برای تعیین یک حرف AM / PM همچنین می توانید از یک t استفاده کنید:

SELECT
FORMAT(CAST('11:28:15' AS datetime), 'hh:mm t') 'AM',
FORMAT(CAST('23:28:15' AS datetime), 'hh:mm t') 'PM';

+---------+---------+
| AM | PM |
|---------+---------|
| 11:28 A | 11:28 P |
+---------+---------+

Without using the FORMAT() Function

تابع FORMAT در SQL Server 2012 معرفی شد. اگر از نسخه های قبلی SQL Server استفاده می کنید باید روش های دیگری را برای این منظور اتخاذ کنید. یکی از این روش ها، بصورت مثال زیر است:

DECLARE @thetime time
SET @thetime = '11:28:15'
SELECT CONVERT(varchar(8), @thetime, 100) Result;

+----------+
| Result |
|----------|
| 11:28AM |
+----------+

ضمنا با جایگزین کردن 0 به جای 100، همان خروج فوق را می گیرید:

DECLARE @thetime time
SET @thetime = '11:28:15'
SELECT CONVERT(varchar(8), @thetime, 0) Result;

+----------+
| Result |
|----------|
| 11:28AM |
+----------+


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز