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


نحوه تبدیل Date به DateTime در SQL Server

نحوه تبدیل Date به DateTime در SQL Server
در این پست کوتاه با مثال هایی نحوه تبدیل date به datetime را بررسی خواهیم کرد. هنگامی که یک مقدار date به datetime تبدیل می کنید، اطلاعات اضاافی ای به مقدار اضافه می شود که دلیل آن این است که datetime شامل اطلاعات زمان هم می باشد و date فقط شمال تاریخ می باشد.

نرم افزار سامانه مودیان راهکار
برای مثال، به اسکریپت زیر دقت کنید:



DECLARE @thedate date, @thedatetime datetime
SET @thedate = '2020-12-01'
SET @thedatetime = @thedate
SELECT
@thedate AS 'date',
@thedatetime AS 'datetime';

+------------+-------------------------+
| date | datetime |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 00:00:00.000 |
+------------+-------------------------+

در مثال فوق همانطور که مشاهده می کنید، از هیچ تابعی برای تبدیل date به datetime استفاده نشده است. هنگامی که می خواهیم مقدار date را به یک متغیر datetime پاس دهیم ، SQL Server در پشت صحنه تبدیل ضمنی را انجام می دهد. همانطور که مشاهده می کنید، متغیر date فقط حاوی اطلاعات تاریخ است و این در حالیست که متغیر datetime، حاوی هم اطلاعات تاریخ و هم زمان است. پس از تبدیل، همانطور که مشاهده می کنید، زمان بصورت 00:00:00.000 نشان داده شده است و این هم به دلیل این است که date مولفه زمان را در خود ندارد و فقط حاوی تاریخ است. از این رو SQL نمی تواند بفهمد که زمان مد نظر شما چیست و بدین دلیل، زمان را به این شکل نمایش می دهد.
در صورت نیاز به تغییر زمان (اما حفظ همان تاریخ)، می توانید از تابع DATEADD برای انجام این کار استفاده کنید.

DECLARE @thedate date, @thedatetime datetime
SET @thedate = '2020-12-01'
SET @thedatetime = @thedate
SET @thedatetime = DATEADD(hour, 8, @thedatetime)
SELECT
@thedate AS 'date',
@thedatetime AS 'datetime';

+------------+-------------------------+
| date | datetime |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 08:00:00.000 |
+------------+-------------------------+

در مثال زیر از تابع CAST در دستور Select استفاده شده تا تبدیل Date به Datetime انجام شود.

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT
@thedate AS 'date',
CAST(@thedate AS datetime) AS 'datetime';

+------------+-------------------------+
| date | datetime |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 00:00:00.000 |
+------------+-------------------------+

همچنین می توانیم زمان را به صورت زیر تنظیم کنیم:

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT
@thedate AS 'date',
DATEADD(hour, 8, CAST(@thedate AS datetime)) AS 'datetime';

+------------+-------------------------+
| date | datetime |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 08:00:00.000 |
+------------+-------------------------+

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

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT
@thedate AS 'date',
CONVERT(datetime, @thedate) AS 'datetime';

+------------+-------------------------+
| date | datetime |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 00:00:00.000 |
+------------+-------------------------+

زمان را بصورت زیر هم می توانید تظنیم کنید:

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT
@thedate AS 'date',
DATEADD(hour, 8, CONVERT(datetime, @thedate)) AS 'datetime';

+------------+-------------------------+
| date | datetime |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 08:00:00.000 |
+------------+-------------------------+


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

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

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


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