SQL - DateAdd()
DATEADD() is the SQL function used to add and increment date values. Hours, minutes, months, and days can be added to any date value. In fact, dates can be added based on any type of date part discussed in the SQL DATEPART() lesson.
SQL Code:
USE mydatabase;
SELECT DATEADD(year, 1, getdate()) AS "+1 Year";
SQL Results:
+1 Year |
2009-06-31 00:00:00.000 |
This example shows how to use
DATEADD() to take a specified date value and increment it by the 'year' date part. By replacing the middle parameter with a negative value, we can utilize the same
DATEADD() function to subtract dates as well.
SQL Code:
USE mydatabase;
SELECT DATEADD(day,-1, '2006-06-01') AS "-1 Day";
SQL Results:
-1 Day |
2006-05-31 00:00:00.000 |
In each example, SQL is able to perform a calculation on each date value based on a timestamp, and after the calculation, a timestamp value returned. Also note that the date parameter can be based on another SQL function or the result of a subquery.
SQL Code:
USE mydatabase;
SELECT DATEADD(day,-30, (SELECT MAX(day_of_order) FROM orders)) AS "-30 Days";
SQL Results:
-30 Days |
2008-07-17 00:00:00.000 |
Here we have now constructed a very useful, dynamic statement pulling the most current order (MAX) in the orders table, and we've been able to subtract one day from that value. While this information does not directly prove useful, if we take this query one step further and place this statement in a
WHERE as a subquery, we should be more satisfied with the results.
SQL Code:
USE mydatabase;
SELECT *
FROM orders
WHERE day_of_order >
(SELECT DATEADD(day,-30, (SELECT MAX(day_of_order) FROM orders)) AS "-30 Days");
SQL Results:
id | customer | day_of_order | product | quantity |
1 | Tia | 2008-08-01 00:00:00.000 | Hanging Files | 11 |
2 | Tia | 2008-08-01 00:00:00.000 | Stapler | 3 |
3 | A+Maintenance | 2008-08-16 00:00:00.000 | Hanging Files | 14 |
4 | Gerald Garner | 2008-08-15 00:00:00.000 | 19" LCD Screen | 5 |
5 | Tia | 2008-07-25 00:00:00.000 | 19" LCD Screen | 5 |
6 | Tia | 2008-07-25 00:00:00.000 | HP Printer | 4 |
By placing this calculated date in the
WHERE clause, we were able to pull all the records that have happened within 30 days of the most recent order (2008-07-17 00:00:00.000). We are able to query the orders table and request this information with a dynamic query that will yield different results as new orders are placed and time goes by.
0 comments:
Post a Comment