Available in:All versions (Works in Excel 2007, every later version, Microsoft 365 and Excel for the web)Examples need Excel 2021 or laterCategory:Date & time

DATE

DATUM in Dutch Excel

Builds a real Excel date from a year, a month and a day, rolling over any month or day that falls outside its normal range.

Difficulty rating 2 of 5. Three plain numbers, but month and day values outside the normal range roll over instead of failing, and using that on purpose is the real skill.

Last updated: 13 October 2026

See the worked examples

Sheet excerpt: E2 holds the formula
RowABCDE
1Entry no.YearMonthDayPosting date
225-0412202520251212313131 Dec 202531 Dec 2025=DATE(B2, C2, D2)=DATE(B2; C2; D2)
325-0413202620261122
426-000320262026111515
Formula cell (E2)Input

Result: 31 Dec 2025

=DATE(B2, C2, D2)
=DATE(B2; C2; D2)

What DATE does and when to use it

What it does: it builds a real date, a serial number that Excel can calculate with, from a year, a month and a day, for example the bank statement date that an export splits over three columns.

When to use it: to put a fixed date in a formula, rebuild dates from parts, or find the first or last day of a period (month 13 rolls over to January, day 0 is the last day of the previous month). To move a date by whole months, EDATE is shorter.

How Excel evaluates it

Excel works through the arguments in order:

  • year: Excel settles which year it means, 1900 to 9999 as written, 0 to 1899 plus 1900
  • month: Excel counts month months forward from the start of that year, so any month outside 1 to 12 moves the date into another year
  • day: from the first day of that month Excel counts day days, so a day past the end of the month continues into the next month and day 0 lands on the last day of the previous month

The answer is a serial number, the count of days since 1 January 1900, and Excel formats the cell as a date. 31 March 2026 is serial number 46112.

Mental model

A car's odometer for the calendar: push the month wheel past 12 and the year wheel ticks over; turn the day wheel back to 0 and you land on the last day of the month before.

Terms used on this page: serial number, argument, cell

DATE(year, month, day)
DATE(year; month; day)
Arguments
ArgumentTypeMeaning
yearRequiredThe year, written with four digits.
monthRequiredThe month number; above 12 or below 1 rolls into another year.
dayRequiredThe day number; 0 gives the last day of the previous month.

Return value:The date as a serial number

Formulas use commas (,) between arguments, as in English Excel. Formulas use semicolons (;) between arguments, as in Dutch Excel. Formulas use commas (,) between arguments, as in English Excel; Dutch Excel uses semicolons (;).

Worked examples

Beginner

Rebuild a bank statement date split over three columns

The bank journal (BNK) arrives from the client's system with the posting date as three separate numbers: year, month and day. For the cut-off test around 31 December 2025 you need one proper date per entry in column E, so you can sort and filter on it.

Sheet excerpt: E2 holds the formula
RowABCDEF
1Entry no.YearMonthDayPosting date
225-0412202520251212313131 Dec 202531 Dec 2025=DATE(B2, C2, D2)=DATE(B2; C2; D2)
325-0413202620261122
426-000320262026111515
5
Formula cell (E2)Input

Formula in E2

=DATE(B2, C2, D2)
=DATE(B2; C2; D2)

Result: 31 Dec 2025

Step by step
  1. Excel reads B2 as year: 2025. It lies between 1900 and 9999, so it is used as written.
  2. It reads C2 as month: 12, which is December 2025.
  3. It reads D2 as day: 31. Counting from 1 December, the 31st day is 31 December, which still falls inside December.
  4. The result is serial number 46022, which Excel displays as 31 Dec 2025 because the cell has a date format.
  5. Copy the formula down and E3 becomes 2 Jan 2026 and E4 15 Jan 2026. Entry 25-0413 is therefore posted after year end, and you can sort on column E to separate the entries on each side of the cut-off.

Watch out: If a future export writes the year as 25, E2 becomes Dec 31, 1925. Nothing warns you, so check the year column after each import.

More on this example: why it works

Why it works

DATE needs numbers in a fixed order, year, month, day, and the export supplies exactly that in three columns. The result is a real date, so it sorts in time order and can be compared with 31 December 2025, which three separate numbers cannot.

Intermediate

Month in which an asset is fully depreciated

The fixed asset register (activastaat) lists the start year and start month of depreciation per asset. You recalculate from which date each asset is fully depreciated: the first day of the month after the last depreciation charge.

The useful life in months sits in F1, so you can change it per asset class. Assets that start late in the year must land in a later year.

Sheet excerpt: D2 holds the formula
RowABCDEFG
1AssetStart yearStart monthFully depreciated fromUseful life (months)3636
2A-10120232023441 Apr 20261 Apr 2026=DATE(B2, C2 + $F$1, 1)=DATE(B2; C2 + $F$1; 1)
3A-1022023202399
4A-103202320231111
5A-1042024202411
6A-105202420241212
7
Formula cell (D2)Input

Formula in D2

=DATE(B2, C2 + $F$1, 1)
=DATE(B2; C2 + $F$1; 1)

Result: 1 Apr 2026

Step by step
  1. Excel evaluates the month argument first: C2 + $F$1 = 4 + 36 = 40.
  2. DATE(2023, 40, 1) counts 40 months from January 2023. 36 months is three years, so month 40 is April 2026: 1 April 2026.
  3. Copied down, the formula reads B and C of its own row but still $F$1. D3: 9 + 36 = 45, so 1 September 2026. D4: 11 + 36 = 47, so 1 November 2026.
  4. D5: 1 + 36 = 37 from 2024, so 1 January 2027. D6: 12 + 36 = 48 from 2024, which is December of 2027: 1 December 2027. The year moves up without any IF.
  5. Any depreciation the client still books on or after that date is a finding. Change F1 to 60 and D2 becomes 1 April 2028 (4 + 60 = 64) for every row at once, because all copies point at $F$1.

Watch out: Without the $ signs, D3 would read F2, which is empty and counts as 0, and show 1 September 2023: a plausible date that is wrong.

More on this example: why it works, 1 variation

Why it works

DATE counts months from January of the given year, so any total above 12 is a position in a later year. Fixing day at 1 keeps every result on the first of a month, which avoids the day overflow you would get from a day such as 31. The $ signs hold F1 in place while B and C move down with the copy.

Variations

=DATE(B2, C2 + $F$1, 0)
=DATE(B2; C2 + $F$1; 0)

The last day of the final depreciation month instead of the first day after it: same month total, day 0. For A-101 that is 31 March 2026.

Advanced

Due date of purchase invoices at 30 days after end of month

For the payables cut-off test you recalculate the due date of purchase invoices (journal INK). The supplier terms count from the end of the invoice month, not from the invoice date: 30 days after end of month, and 14 days for one supplier.

You want to know which invoices fall due after 31 December 2025, including an invoice from December and one from the leap-year February of 2024.

Sheet excerpt: D2 holds the formula
RowABCDE
1Invoice no.Invoice dateTerms (days)Due date
2INK-25-031118 Nov 2025303030 Dec 202530 Dec 2025=DATE(YEAR(B2), MONTH(B2) + 1, 0) + C2=DATE(YEAR(B2); MONTH(B2) + 1; 0) + C2
3INK-25-03425 Dec 20251414
4INK-25-035629 Dec 20253030
5INK-24-00713 Feb 20243030
6
Formula cell (D2)Input

Formula in D2

=DATE(YEAR(B2), MONTH(B2) + 1, 0) + C2
=DATE(YEAR(B2); MONTH(B2) + 1; 0) + C2

Result: 30 Dec 2025

Step by step
  1. Excel evaluates the inner functions first. YEAR(B2) returns 2025 and MONTH(B2) returns 11, from 18 November 2025.
  2. DATE receives 2025, 11 + 1 = 12 and 0. Day 0 of December is the day before 1 December: 30 November 2025, serial number 45991.
  3. Excel adds C2: 45991 + 30 = 46021, which is 30 December 2025. This invoice falls due before year end.
  4. D3: month 12 + 1 = 13 rolls into 2026, and day 0 of January 2026 is 31 December 2025. Plus 14 is 14 January 2026.
  5. D4: the same month end, 31 December 2025, plus 30 is 30 January 2026. Both December invoices fall due after year end.
  6. D5: month 2 + 1 = 3, and day 0 of March 2024 is 29 February 2024, because 2024 is a leap year. Plus 30 is 30 March 2024. DATE knows the length of every month, so no month table is needed.

Watch out: Writing the month end as DATE(YEAR(B2), MONTH(B2), 30) looks right for November but is silently wrong for February 2024: day 30 does not exist, so it returns 1 March 2024 and the due date shifts by one day.

More on this example: why it works, 1 more pitfall, 2 variations

Why it works

YEAR and MONTH take the date apart, DATE puts it back together one month later, and day 0 steps back one day to the end of the invoice month. Both kinds of rollover work together here: month 13 moves into the next year and day 0 moves into the previous month. Because Excel dates are day counts, adding C2 adds that many calendar days.

More to watch out for

  • If B holds text that only looks like a date, YEAR returns #VALUE! or, worse, a date read in the wrong order, depending on the regional setting: 03/04/2026 is March 4 in a US setting and 3 April in a Dutch one.

Variations

=EOMONTH(B2, 0) + C2
=EOMONTH(B2; 0) + C2

EOMONTH returns the month end in one call and reads more clearly; the DATE version shows the mechanism and works the same in every version.

=DATE(YEAR(B2), MONTH(B2), 1)
=DATE(YEAR(B2); MONTH(B2); 1)

The first day of the invoice month: a period key that groups all invoices of one month under one date.

MasterExcel 2021 or later (This example needs Excel 2021 or later)

Quarter calendar for a client with a July to June financial year

Your client closes its books on 30 June, so its financial year runs from 1 July to 30 June. For the interim procedures and the cut-off tests you want the start and end date of each quarter as a small spilled table, driven by two settings, so the same formula serves next year and other clients with a broken financial year.

Sheet excerpt: D2 holds the formula
RowABCDEF
1SettingValueQuarter startQuarter end
2Financial year starts in year202520251 Jul 2025=LET( fyYear, B2, fyMonth, B3, q, SEQUENCE(4), DATE(fyYear, fyMonth + 3 * (q - 1) + {0,3}, {1,0}) )=LET( fyYear; B2; fyMonth; B3; q; SEQUENCE(4); DATE(fyYear; fyMonth + 3 * (q - 1) + {0\3}; {1\0}) )30 Sep 2025
3First month of financial year771 Oct 202531 Dec 2025
41 Jan 202631 Mar 2026
51 Apr 202630 Jun 2026
6
Formula cell (D2)InputSpilled result

Formula in D2

=LET(
  fyYear, B2,
  fyMonth, B3,
  q, SEQUENCE(4),
  DATE(fyYear, fyMonth + 3 * (q - 1) + {0,3}, {1,0})
)
=LET(
  fyYear; B2;
  fyMonth; B3;
  q; SEQUENCE(4);
  DATE(fyYear; fyMonth + 3 * (q - 1) + {0\3}; {1\0})
)

Result: 1 Jul 2025 | 30 Sep 2025 / 1 Oct 2025 | 31 Dec 2025 / 1 Jan 2026 | 31 Mar 2026 / 1 Apr 2026 | 30 Jun 20261 Jul 2025 | 30 Sep 2025 / 1 Oct 2025 | 31 Dec 2025 / 1 Jan 2026 | 31 Mar 2026 / 1 Apr 2026 | 30 Jun 2026

Step by step
  1. LET names the settings: fyYear is 2025 and fyMonth is 7. q is SEQUENCE(4), a column of 1, 2, 3 and 4, one row per quarter.
  2. fyMonth + 3 * (q - 1) gives the first month of each quarter: 7, 10, 13 and 16. Adding the row constant {0,3} widens that column into two: the start month and the month three later, so the rows become 7 and 10, 10 and 13, 13 and 16, 16 and 19.
  3. The day argument {1,0} lines up with those two columns: day 1 in the first column, day 0 in the second. DATE is evaluated once per cell of the resulting 4 by 2 grid.
  4. Row 1: DATE(2025, 7, 1) is 1 July 2025 and DATE(2025, 10, 0) is 30 September 2025. Row 2: DATE(2025, 10, 1) is 1 October 2025 and DATE(2025, 13, 0) is 31 December 2025, because month 13 is January 2026 and day 0 steps back one day.
  5. Row 3: DATE(2025, 13, 1) is 1 January 2026 and DATE(2025, 16, 0) is 31 March 2026. Row 4: DATE(2025, 16, 1) is 1 April 2026, and DATE(2025, 19, 0) rolls month 19 into July 2026 and day 0 back to 30 June 2026. The financial year crosses the calendar year without any special case.
  6. The eight dates spill into D2:E5. Change B3 to 2 for a client whose year starts in February and the table recalculates to 1 February 2025 through 31 January 2026.

Watch out: Swapping the day constant to {0,1} looks almost the same but gives the day before each quarter start and the day after each quarter end: 30 June 2025 to 1 October 2025 in row 1. Check that row 1 starts on the first of fyMonth.

More on this example: why it works, 2 more pitfalls, 1 variation

Why it works

DATE accepts arrays in any argument and pairs them up the way arithmetic does: a 4-row column combined with a 1-by-2 row constant gives a 4-by-2 grid. The overflow rules then do all the calendar work: month 13 and above become the next year, day 0 becomes the month end.

Do not use this for a one-off date; a single DATE or EOMONTH in a cell is clearer. When the quarter table feeds lookups across many sheets of your working papers, a fixed period table typed once is the alternative: slower to set up, but a reviewer can read and check it without decoding array constants.

More to watch out for

  • Dutch Excel writes the column separator inside an array constant as a backslash, so the constants read {0\3} and {1\0} there. The canonical form uses a comma.
  • D2:E5 must be empty, otherwise the formula returns #SPILL!.

Variations

=LET(
  q, SEQUENCE(4),
  DATE(B2, B3 + 3 * q, 0)
)
=LET(
  q; SEQUENCE(4);
  DATE(B2; B3 + 3 * q; 0)
)

Only the quarter end dates, as a single column, when the starts are not needed.

Common mistakes

Common mistakes
SymptomCauseFix
A date in 1936 and no errorThe arguments are entered in Dutch reading order, DATE(31, 3, 2026), and the cell shows 15 September 1936 without any error.The order is always year, month, day, whatever your regional setting. Year 31 becomes 1931 and day 2026 rolls forward more than five years.
31 March 1926 instead of 2026A two-digit year, DATE(26, 3, 31), returns 31 March 1926.Always pass four digits. If the source column holds two-digit years, add 2000 to it inside the formula.
A number like 46112 instead of a dateThe formula works but the cell shows 46112 instead of a date.The value is right; the cell had a number format before you typed the formula. Apply a date format to it.
Month 14 passes as a valid dateDATE is used to check input and a typo such as month 14 slips through as a valid date in the next year.Rollover is by design. Test the month and day separately (for example with Data Validation) if the parts are typed by hand.