w3resource

AdventureWorks Database: Return a truncated date with 4 months added to the orderdate

SQL Query - AdventureWorks: Exercise-182 with Solution

182. From the following table write a query in SQL to return a truncated date with 4 months added to the orderdate.

Sample table: sales.salesorderheader

salesorderid|revisionnumber|orderdate              |duedate                |shipdate               |status|onlineorderflag|purchaseordernumber|accountnumber |customerid|salespersonid|territoryid|billtoaddressid|shiptoaddressid|shipmethodid|creditcardid|creditcardapprovalcode|currencyrateid|subtotal   |taxamt    |freight  |totaldue   |comment|rowguid                             |modifieddate           |
------------+--------------+-----------------------+-----------------------+-----------------------+------+---------------+-------------------+--------------+----------+-------------+-----------+---------------+---------------+------------+------------+----------------------+--------------+-----------+----------+---------+-----------+-------+------------------------------------+-----------------------+
       43659|             8|2011-05-31 00:00:00.000|2011-06-12 00:00:00.000|2011-06-07 00:00:00.000|     5|false          |PO522145787        |10-4020-000676|     29825|          279|          5|            985|            985|           5|       16281|105041Vi84182         |              | 20565.6206| 1971.5149| 616.0984| 23153.2339|       |79b65321-39ca-4115-9cba-8fe0903e12e6|2011-06-07 00:00:00.000|
       43660|             8|2011-05-31 00:00:00.000|2011-06-12 00:00:00.000|2011-06-07 00:00:00.000|     5|false          |PO18850127500      |10-4020-000117|     29672|          279|          5|            921|            921|           5|        5618|115213Vi29411         |              |  1294.2529|  124.2483|  38.8276|  1457.3288|       |738dc42d-d03b-48a1-9822-f95a67ea7389|2011-06-07 00:00:00.000|
       43661|             8|2011-05-31 00:00:00.000|2011-06-12 00:00:00.000|2011-06-07 00:00:00.000|     5|false          |PO18473189620      |10-4020-000442|     29734|          282|          6|            517|            517|           5|        1346|85274Vi6854           |             4| 32726.4786| 3153.7696|  985.553| 36865.8012|       |d91b9131-18a4-4a11-bc3a-90b6f53e9d74|2011-06-07 00:00:00.000|
       43662|             8|2011-05-31 00:00:00.000|2011-06-12 00:00:00.000|2011-06-07 00:00:00.000|     5|false          |PO18444174044      |10-4020-000227|     29994|          282|          6|            482|            482|           5|       10456|125295Vi53935         |             4| 28832.5289| 2775.1646| 867.2389| 32474.9324|       |4a1ecfc0-cc3a-4740-b028-1c50bb48711c|2011-06-07 00:00:00.000|
       43663|             8|2011-05-31 00:00:00.000|2011-06-12 00:00:00.000|2011-06-07 00:00:00.000|     5|false          |PO18009186470      |10-4020-000510|     29565|          276|          4|           1073|           1073|           5|        4322|45303Vi22691          |              |   419.4589|   40.2681|  12.5838|   472.3108|       |9b1e7a40-6ae0-4ad3-811c-a64951857c4b|2011-06-07 00:00:00.000|
       43664|             8|2011-05-31 00:00:00.000|2011-06-12 00:00:00.000|2011-06-07 00:00:00.000|     5|false          |PO16617121983      |10-4020-000397|     29898|          280|          1|            876|            876|           5|         806|95555Vi4081           |              | 24432.6088| 2344.9921|   732.81| 27510.4109|       |22a8a5da-8c22-42ad-9241-839489b6ef0d|2011-06-07 00:00:00.000|
       43665|             8|2011-05-31 00:00:00.000|2011-06-12 00:00:00.000|2011-06-07 00:00:00.000|     5|false          |PO16588191572      |10-4020-000146|     29580|          283|          1|            849|            849|           5|       15232|35568Vi78804          |              | 14352.7713| 1375.9427| 429.9821| 16158.6961|       |5602c304-853c-43d7-9e79-76e320d476cf|2011-06-07 00:00:00.000|
	   -- more --

Click to view Full table

Sample Solution:


-- Selecting the orderdate column and applying a date truncation to the month level
SELECT orderdate, DATE_TRUNC('month', (SELECT orderdate + interval '4 month'))
-- Selecting from the Salesorderheader table
FROM Sales.salesorderheader;

Explanation:

  • This SQL query retrieves data from the sales order header table.
  • Comments are added to explain each part of the query for better understanding and maintenance.
  • Here's a breakdown of what the query does:
    • It selects the orderdate column from the sales order header table.
    • It applies the DATE_TRUNC function to truncate the date to the beginning of the month.
    • Inside the DATE_TRUNC function, it calculates a new date by adding 4 months to the orderdate.
    • The result is the truncated date to the month level for each orderdate plus 4 months.
    • It retrieves data from the Salesorderheader table.

Sample Output:

orderdate              |date_trunc             |
-----------------------+-----------------------+
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
2011-05-31 00:00:00.000|2011-09-01 00:00:00.000|
...

SQL AdventureWorks Editor:

Practice Online


Contribute your code and comments through Disqus.

Previous: Return the difference in sales quotas for a specific employee.
Next: Return the orders that have sales on or after December 2011.


What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.