SQL தேதிகள்
தேதிகளுடன் பணிபுரியும் போது மிகவும் கடினமான பகுதி என்னவென்றால், நீங்கள் செருக முயற்சிக்கும் தேதியின் வடிவம் தரவுத்தளத்தில் உள்ள தேதி நெடுவரிசையின் வடிவத்துடன் பொருந்துகிறது என்பதை உறுதிப்படுத்துவதாகும்.
உங்கள் தரவில் தேதிப் பகுதி மட்டுமே இருப்பது வரை, உங்கள் குவெரிகள் எதிர்பார்த்தபடி வேலை செய்யும். இருப்பினும், ஒரு நேரப் பகுதி சம்பந்தப்பட்டிருந்தால், அது மிகவும் சிக்கலானதாகிறது.
முக்கியமான குறிப்பு:
தேதி வடிவங்கள் தரவுத்தள அமைப்புகள் மற்றும் பிராந்திய அமைப்புகளுக்கு இடையே மாறுபடும். எப்போதும் உங்கள் குறிப்பிட்ட தரவுத்தளத்தின் ஆவணங்களைச் சரிபார்க்கவும்.
SQL தேதி தரவு வகைகள்
MySQL தேதி வகைகள்
- DATE - வடிவம் YYYY-MM-DD
- DATETIME - வடிவம்: YYYY-MM-DD HH:MI:SS
- TIMESTAMP - வடிவம்: YYYY-MM-DD HH:MI:SS
- YEAR - வடிவம் YYYY அல்லது YY
SQL Server தேதி வகைகள்
- DATE - வடிவம் YYYY-MM-DD
- DATETIME - வடிவம்: YYYY-MM-DD HH:MI:SS
- SMALLDATETIME - வடிவம்: YYYY-MM-DD HH:MI:SS
- TIMESTAMP - வடிவம்: ஒரு தனித்துவமான எண்
குறிப்பு:
தேதி வகைகள் உங்கள் தரவுத்தளத்தில் ஒரு புதிய அட்டவணையை உருவாக்கும் போது ஒரு நெடுவரிசைக்குத் தேர்ந்தெடுக்கப்படுகின்றன!
தேதிகளுடன் SQL பணிபுரிதல்
பின்வரும் அட்டவணையைப் பாருங்கள்:
| 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" OrderDate உள்ள பதிவுகளைத் தேர்ந்தெடுக்க விரும்புகிறோம்.
நாங்கள் பின்வரும் SELECT அறிக்கையைப் பயன்படுத்துகிறோம்:
தேதி அடிப்படையில் தேர்ந்தெடுத்தல்:
SELECT * FROM Orders
WHERE OrderDate='2008-11-11'
முடிவு-தொகுப்பு இப்படித் தோற்றமளிக்கும்:
| 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 |
நாம் மேலே உள்ள அதே SELECT அறிக்கையைப் பயன்படுத்தினால்:
நேரக் கூறுடன் தேடல்:
SELECT * FROM Orders
WHERE OrderDate='2008-11-11'
எங்களுக்கு எந்த முடிவும் கிடைக்காது! குவெரி நேரப் பகுதி இல்லாத தேதிகளை மட்டுமே தேடுகிறது என்பதே இதற்குக் காரணம்.
உதவிக்குறிப்பு:
உங்கள் குவெரிகளை எளிமையாகவும் பராமரிக்க எளிதாகவும் வைத்திருப்பதற்காக, உங்களுக்குத் தேவையில்லாவிட்டால், உங்கள் தேதிகளில் நேரக் கூறுகளைப் பயன்படுத்தாதீர்கள்!
பொதுவான தேதி செயல்பாடுகள்
தற்போதைய தேதி
தற்போதைய தேதியைப் பெறுதல்
-- MySQL
SELECT CURDATE();
-- SQL Server
SELECT GETDATE();
-- Oracle
SELECT SYSDATE FROM DUAL;
தேதி கூட்டல்
தேதிகளில் நாட்களைச் சேர்த்தல்
-- MySQL
SELECT DATE_ADD(OrderDate, INTERVAL 7 DAY)
FROM Orders;
-- SQL Server
SELECT DATEADD(day, 7, OrderDate)
FROM Orders;
தேதி வேறுபாடு
இரண்டு தேதிகளுக்கு இடையே உள்ள வேறுபாடு
-- MySQL
SELECT DATEDIFF('2023-12-31', '2023-01-01');
-- SQL Server
SELECT DATEDIFF(day, '2023-01-01', '2023-12-31');
தேதி வடிவமைப்பு
MySQL தேதி வடிவமைப்பு
-- வெவ்வேறு வடிவங்கள்
SELECT DATE_FORMAT(OrderDate, '%Y-%m-%d') AS FormattedDate,
DATE_FORMAT(OrderDate, '%d/%m/%Y') AS EuropeanDate,
DATE_FORMAT(OrderDate, '%M %d, %Y') AS LongDate
FROM Orders;
SQL Server தேதி வடிவமைப்பு
-- வெவ்வேறு வடிவங்கள்
SELECT CONVERT(VARCHAR, OrderDate, 23) AS ISOFormat,
CONVERT(VARCHAR, OrderDate, 103) AS BritishFormat,
FORMAT(OrderDate, 'dddd, MMMM dd, yyyy') AS LongDate
FROM Orders;
நடைமுறை தேதி குவெரிகள்
தேதி வரம்பு குவெரிகள்
-- கடந்த 30 நாட்களின் ஆர்டர்கள்
SELECT * FROM Orders
WHERE OrderDate >= DATE_SUB(CURDATE(), INTERVAL 30 DAY);
-- குறிப்பிட்ட மாதத்தின் ஆர்டர்கள்
SELECT * FROM Orders
WHERE YEAR(OrderDate) = 2023
AND MONTH(OrderDate) = 12;
தேதி ஒருங்கிணைப்பு
-- மாதம் வாரியாக ஆர்டர்கள்
SELECT YEAR(OrderDate) AS Year,
MONTH(OrderDate) AS Month,
COUNT(*) AS OrderCount
FROM Orders
GROUP BY YEAR(OrderDate), MONTH(OrderDate)
ORDER BY Year, Month;
தேதி வரிசைப்படுத்தல்
-- சமீபத்திய ஆர்டர்கள் முதலில்
SELECT * FROM Orders
ORDER BY OrderDate DESC;
-- பழமையான ஆர்டர்கள் முதலில்
SELECT * FROM Orders
ORDER BY OrderDate ASC;