SQL

داده های تاریخ و زمان در SQL

داده های تاریخ و زمان در SQL:

مقدمه:

داده های تاریخ و زمان در SQL برای ذخیره اطلاعات مربوط به زمان و تاریخ، مانند تاریخ تولد، تاریخ انتشار یک مقاله، یا زمان شروع یک رویداد به کار می‌روند. این نوع داده ها از نظر دقت و نوع اطلاعات به دسته های مختلفی تقسیم می‌شوند.

انواع داده های تاریخ و زمان:

  • Date: برای ذخیره تاریخ به صورت YYYY-MM-DD به کار می‌رود.
  • Time: برای ذخیره زمان به صورت HH:MM:SS به کار می‌رود.
  • Datetime: برای ذخیره تاریخ و زمان به صورت YYYY-MM-DD HH:MM:SS به کار می‌رود.
  • Smalldatetime: برای ذخیره تاریخ و زمان به صورت YYYY-MM-DD HH:MM به کار می‌رود.
  • Timestamp: برای ذخیره تاریخ و زمان به صورت YYYY-MM-DD HH:MM:SS.SSS به کار می‌رود.

نکاتی در مورد داده های تاریخ و زمان:

  • دقت نوع داده Date در روز است، در حالی که دقت نوع داده Time در ثانیه است.
  • نوع داده Datetime برای ذخیره تاریخ و زمان با دقت ثانیه به کار می‌رود.
  • نوع داده Smalldatetime برای ذخیره تاریخ و زمان با دقت دقیقه به کار می‌رود.
  • نوع داده Timestamp برای ذخیره تاریخ و زمان با دقت میلی ثانیه به کار می‌رود.

انتخاب نوع داده مناسب:

انتخاب نوع داده مناسب برای ذخیره تاریخ و زمان، به دقت مورد نیاز و کاربرد مورد نظر بستگی دارد.

مثال ها:

  • ذخیره تاریخ تولد: birthdate DATE
  • ذخیره زمان شروع یک رویداد: start_time TIME
  • ذخیره تاریخ و زمان انتشار یک مقاله: publication_datetime DATETIME
  • ذخیره تاریخ و زمان ثبت یک سفارش: order_timestamp TIMESTAMP

توابع تاریخ و زمان:

SQL Server توابع مختلفی برای کار با داده های تاریخ و زمان ارائه می‌دهد.

  • GETDATE(): برای دریافت تاریخ و زمان فعلی سیستم به کار می‌رود.
  • DATEADD(): برای اضافه کردن یک بازه زمانی مشخص به یک تاریخ یا زمان به کار می‌رود.
  • DATEDIFF(): برای محاسبه اختلاف بین دو تاریخ یا زمان به کار می‌رود.
  • DATENAME(): برای دریافت نام یک بخش از تاریخ یا زمان (مانند روز، ماه، سال) به کار می‌رود.

موارد استفاده دیگر:

  • مقایسه تاریخ و زمان:
    • SELECT * FROM orders WHERE order_date > '2023-12-31'
  • محاسبه سن:
    • SELECT DATEDIFF(YEAR, birthdate, GETDATE()) AS age FROM customers
  • اضافه کردن یا کم کردن زمان:
    • SELECT DATEADD(HOUR, 1, start_time) AS end_time

نکته:

  • اینها فقط چند نمونه از کاربردهای داده های تاریخ و زمان در SQL هستند.
  • انتخاب نوع داده مناسب و استفاده از توابع تاریخ و زمان به شما کمک می کند تا اطلاعات مربوط به زمان و تاریخ را به طور دقیق و کارآمد ذخیره و پردازش کنید.

بسط و گسترش:

  • ذخیره تاریخ و زمان به صورت محلی:

    • SET DATEFORMAT dmy
    • SELECT order_date FROM orders
  • ذخیره تاریخ و زمان در منطقه زمانی خاص:

    • SELECT order_date AT TIME ZONE 'Asia/Tehran' FROM orders
  • استفاده از توابع تاریخ و زمان در دستورات SQL:

    • SELECT AVG(DATEDIFF(MINUTE, start_time, end_time)) AS average_duration FROM events
  • استفاده از توابع تاریخ و زمان در برنامه های کاربردی:

    • SELECT * FROM customers WHERE birthdate BETWEEN '1980-01-01' AND '1990-12-31'

 

مثال جامع از داده های تاریخ و زمان در SQL:

فرض کنید یک جدول به نام Orders داریم که شامل ستون های زیر است:

  • order_id: شناسه سفارش (عدد صحیح)
  • customer_id: شناسه مشتری (عدد صحیح)
  • order_date: تاریخ سفارش (تاریخ)
  • order_time: زمان سفارش (زمان)
  • order_total: مبلغ کل سفارش (عدد اعشاری)

در این مثال، می خواهیم:

  • همه سفارشات را در تاریخ 1402/02/28 نمایش دهیم:
SQL
SELECT *
FROM Orders
WHERE order_date = '1402-02-28';
  • میانگین مبلغ سفارشات را در 3 ماه گذشته محاسبه کنیم:
SQL
SELECT AVG(order_total) AS average_total
FROM Orders
WHERE order_date BETWEEN DATEADD(MONTH, -3, GETDATE()) AND GETDATE();
  • مشتریانی که در 7 روز گذشته سفارش داده اند را پیدا کنیم:
SQL
SELECT customer_id
FROM Orders
WHERE order_date BETWEEN DATEADD(DAY, -7, GETDATE()) AND GETDATE();
  • سفارشاتی که در 10 صبح تا 12 ظهر ثبت شده اند را پیدا کنیم:
SQL
SELECT *
FROM Orders
WHERE order_time BETWEEN '10:00:00' AND '12:00:00';
  • 5 سفارش اخیر را بر اساس تاریخ و زمان سفارش نمایش دهیم:
SQL
SELECT *
FROM Orders
ORDER BY order_date DESC, order_time DESC
LIMIT 5;

نکات:

  • در این مثال، از توابع تاریخ و زمان مختلفی مانند GETDATE(), DATEADD(), DATEDIFF(), BETWEEN و ORDER BY استفاده شده است.
  • می توانید از این توابع در دستورات SQL خود برای کار با داده های تاریخ و زمان به روش های مختلف استفاده کنید.

مثال های دیگر:

  • محاسبه سن یک مشتری:
SQL
SELECT DATEDIFF(YEAR, birthdate, GETDATE()) AS age
FROM Customers;
  • اضافه کردن 30 دقیقه به زمان سفارش:
SQL
SELECT DATEADD(MINUTE, 30, order_time) AS new_time
FROM Orders;
  • دریافت نام روز برای تاریخ سفارش:
SQL
SELECT DATENAME(dw, order_date) AS day_name
FROM Orders;

 

0/5 ( 0 امتیاز )
نمایش بیشتر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا