Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server
Meghan Kwartler
IT Consultant

-- Cú pháp CONVERT:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
-- Trả về expression theo data_type
-- Cú pháp DATEPART
DATEPART ( datepart , date )
-- Trả về int
-- Cú pháp DATENAME
DATENAME ( datepart , date )
-- Trả về nvarchar
-- Cú pháp DATEDIFF
DATEDIFF ( datepart , startdate , enddate )
-- Trả về int; không dùng được giá trị datepart weekday
-- Các giá trị datepart = year, quarter, month, dayofyear, day, week, weekday, hour,
-- minute, second, microsecond, nanosecond
-- CONVERT
SELECT
TOP 1 PickupDate,
CONVERT (DATE, PickupDate) AS DateOnly
FROM YellowTripData
+-----------------------------+------------+
| PickupDate | DateOnly |
|-----------------------------+------------|
| 2017-01-09 11:52:13.0000000 | 2017-01-09 |
+-----------------------------+------------+
-- DATEPART
SELECT
TOP 3 COUNT(ID) AS NumberofRides,
DATEPART(HOUR, PickupDate) AS Hour
FROM YellowTripData
GROUP BY DATEPART(HOUR, PickupDate)
ORDER BY COUNT(ID) DESC
+----------------------+
| NumberOfRides | Hour |
|----------------------+
| 616281 | 18 |
| 616281 | 19 |
| 540629 | 17 |
+---------------+------+
--DATENAME
SELECT
TOP 3 ROUND(
SUM(FareAmount),
0
) as TotalFareAmt,
DATENAME(WEEKDAY, PickupDate) AS DayofWeek
FROM YellowTripData
GROUP BY DATENAME (WEEKDAY, PickupDate)
ORDER BY SUM(FareAmount) DESC;
+--------------------------+
| TotalFareAmt | DayofWeek |
|--------------------------+
| 19026645 | Sunday |
| 18749482 | Tuesday |
| 17213351 | Thursday |
+--------------+-----------+
--DATEDIFF
SELECT
AVG(
DATEDIFF(SECOND, PickupDate, DropOffDate)/ 60
) AS AvgRideLengthInMin
FROM YellowTripData
WHERE DATENAME(WEEKDAY, PickupDate) = 'Sunday';
+--------------------+
| AvgRideLengthInMin |
|--------------------+
| 13 |
+--------------------+
Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server