پاسخ به:آموزش SQL
دوشنبه 10 آذر 1393 10:08 PMآموزش SQL-تاریخ ها در SQL
تاریخ در SQL
Wiki
سخت ترین قسمت کار با Date این است که مطمئن شویم فرمت تاریخی که شما سعی می کنید وارد کنید با فرمت ستون تاریخ در پایگاه داده هم خوانی داشته باشد.
تا زمانی که داده فقط شامل تاریخ باشد، Query شما همان طور که انتظار دارید کار خواهد کرد. اما اگر با بخش زمان درگیر شوید، کار کمی پیچیده خواهد شد.
قبل از صحبت درباره پیچیدگی های کار با تاریخ، توابع مهم آن را با هم مرور می کنیم:
توابع تاریخ در MySQL
Wiki
جدول زیر، لیستی از مهم ترین توابع تاریخ در MySQL است:
| تابع | توضیحات |
|---|---|
| NOW() | تاریخ و زمان جاری را برمی گرداند |
| CURDATE() | تاریخ جاری را برمی گرداند |
| CURTIME() | زمان جاری را برمی گرداند |
| DATE() | بخش تاریخ را از یک عبارت date/time بیرون می کشد |
| EXTRACT() | یکی از بخش های عبارت date/time مانند سال، ماه، روز، ساعت و ... را برمی گرداند |
| DATE_ADD() | یک فاصله زمانی مشخص را به تاریخ اضافه می کند |
| DATE_SUB() | یک فاصله زمانی مشخص را از تاریخ کم می کند |
| DATEDIFF() | تعداد روز بین دو تاریخ را برمی گرداند |
| DATE_FORMAT() | نمایش تاریخ و زمان در فرمت های مختلف |
توابع تاریخ در SQL Server
Wiki
جدول زیر، لیستی از مهم ترین توابع تاریخ در SQL Server است:
| تابع | توضیحات |
|---|---|
| GETDATE() | تاریخ و زمان جاری را برمی گرداند |
| DATEPART() | یکی از بخش های عبارت date/time مانند سال، ماه، روز، ساعت و ... را برمی گرداند |
| DATEADD() | یک فاصله زمانی مشخص را به تاریخ اضافه یا کم می کند |
| DATEDIFF() | زمان بین دو تاریخ را برمی گرداند |
| CONVERT() | نمایش تاریخ و زمان در فرمت های مختلف |
انواع داده های تاریخ در SQL
Wiki
MySQL:
- DATE - format YYYY-MM-DD
- DATETIME - format: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - format: YYYY-MM-DD HH:MM:SS
- YEAR - format YYYY or YY
SQL Server:
- DATE - format YYYY-MM-DD
- DATETIME - format: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - format: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - format: a unique number
اگر مایل هستید کلیه ی انواع داده را مرور کنید به مطلب SQL Data Types مراجعه نمایید.
کار با تاریخ در SQL
Wiki
فرض کنید جدول "Orders" را داریم:
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 |
| 2 | Camembert Pierrot | 2008-11-09 |
| 3 | Mozzarella di Giovanni | 2008-11-11 |
| 4 | Mascarpone Fabioli | 2008-10-29 |
حالا می خواهیم رکوردهایی با تاریخ "2008-11-11" را انتخاب کنیم.
از Query زیر استفاده می کنیم:
نتیجه به شکل زیر خواهد بود:
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 |
| 3 | Mozzarella di Giovanni | 2008-11-11 |
حالا، فرض کنید که جدول "Orders" شبیه زیر باشد. (بخش زمان به فیلد OrderDate اضافه شده است)
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 13:23:44 |
| 2 | Camembert Pierrot | 2008-11-09 15:45:21 |
| 3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
| 4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
اگر از Query بالا استفاده کنیم نتیجه ای نخواهیم داشت، بنابراین اگر می خواهید Queryی ساده ای داشته باشید، اجازه ندهید بخش زمان در تاریخ وارد شود.