-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSQL DateTime function queries.sql
More file actions
127 lines (111 loc) · 2.64 KB
/
Copy pathSQL DateTime function queries.sql
File metadata and controls
127 lines (111 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/* DATE-TIME FUNCTIONS
DAY, MONTH, YEAR, DATEPART, DATENAME, DATETRUNC, EOMONTH
FORMAT, CONVERT, CAST
DATEADD, DATEDIFF
ISDATE*/
use salesdb;
select
orderid,
orderdate,
shipdate,
creationtime,
curdate() as today,
now() as today_timestamp
from orders;
select
creationtime,
-- datepart examples
day(creationtime) as date,
month(creationtime) as month,
year(creationtime) as year,
week(creationtime) as week,
quarter(creationtime) as quarter,
-- datename examples
monthname(creationtime) as month_name,
dayname(creationtime) as date_name,
date_format(creationtime, '%y-%m-%d %h:%i:%s') as trunc_datetime
from orders;
-- Aggregations
select
date_format(creationtime, '%y') as trunc_datetime,
count(sales) as sales_count_per_year
from orders
group by date_format(creationtime, '%y');
-- how many orders were placed each month
select
monthname(orderdate),
count(*)
from orders
group by monthname(orderdate);
-- ordersplaced during february
select
monthname(orderdate),
count(*)
from orders
where month(orderdate)=2
group by monthname(orderdate);
select
orderdate,
date_format(orderdate,"%d-%m-%y")
from orders;
-- Formatting in desired order
select
orderid,
creationtime,
concat(
'Day ',
date_format(creationtime, "%a %b")," ",
'Q', quarter(creationtime)," ",
date_format(creationtime, "%y %h:%y:%s")) as formatting
from orders;
select
date_format(orderdate,"%b %y"),
count(*)
from orders
group by date_format(orderdate,"%b %y");
-- Convert
select
creationtime,
convert(creationtime, date)
from orders;
-- Cast
select
creationtime,
cast(creationtime as date) as custom_cast
from orders;
-- DateADD(part, interval, value) in SQL server
select
orderdate,
date_add(orderdate, interval 2 month) as month_add,
date_add(orderdate, interval -2 month) as month_add
from orders;
-- DateDIFF
select
orderdate,
shipdate,
datediff(shipdate, orderdate) as datediff_in_days,
timestampdiff(month, orderdate, shipdate)as datediff_in_months,
timestampdiff(year, orderdate, shipdate) as datediff_in_year
from orders;
-- Find the avg shipping duration in days for each month
select
monthname(orderdate),
monthname(shipdate),
round(avg(datediff(shipdate, orderdate)), 2) as avg_shipping_diff_in_days
from orders
group by monthname(orderdate), monthname(shipdate)
order by monthname(orderdate), monthname(shipdate);
-- TimeGap analysis
-- Find the number of days between each order and previous order
select
orderid,
orderdate as current_orderdate,
lag(orderdate) over (order by orderdate) as previous_orderdate,
datediff(orderdate,
lag(orderdate) over (order by orderdate)) as days_diff
from orders;
-- isdate()
select
orderdate,
date(orderdate)
from orders;