Excel 16.0 build 20430
Windows, 64-bit, CPU not recorded
9,565 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.
Date and time functions
Matches all 9,572 recorded answers
Recorded: 9,565 in the answer bank and 7 workbook cells. How we measure this · See the Rust code
| Language | Name in Excel |
|---|---|
| Arabic | أيام |
| Bulgarian | DAYS |
| Czech | DAYS |
| Danish | DAGE |
| German | TAGE |
| Greek | DAYS |
| English (Australia) | DAYS |
| English (United Kingdom) | DAYS |
| English (United States) | DAYS |
| Spanish | DIAS |
| Estonian | DAYS |
| Finnish | PÄIVÄT |
| French | JOURS |
| Hebrew | DAYS |
| Croatian | DAYS |
| Hungarian | NAPOK |
| Indonesian | HARI |
| Italian | DAYS |
| Japanese | DAYS |
| Korean | DAYS |
| Lithuanian | DAYS |
| Latvian | DAYS |
| Norwegian | DAYS |
| Dutch | DAGEN |
| Polish | DNI |
| Portuguese (Brazil) | DIAS |
| Portuguese (Portugal) | DIAS |
| Romanian | DAYS |
| Russian | ДНИ |
| Slovak | DAYS |
| Slovenian | DAYS |
| Serbian (Latin) | DANI |
| Swedish | DAGAR |
| Thai | DAYS |
| Turkish | GÜNSAY |
| Ukrainian | DAYS |
| Vietnamese | DAYS |
| Chinese (Simplified) | DAYS |
| Chinese (Hong Kong) | DAYS |
| Chinese (Traditional) | DAYS |
Names from Microsoft's support site.
DAYS(end_date, start_date)
DAYS returns the signed number of days from start_date to end_date. Microsoft's page states
the rule directly: when both arguments are numbers, DAYS computes end − start. So it is
subtraction with a name — and with a documented coercion policy that plain subtraction does not
have.
Two things make it worth a page of its own rather than a footnote to the − operator:
DAYS(end_date, start_date). Every other two-date
function in the category — DATEDIF, DAYS360,
NETWORKDAYS, YEARFRAC — takes start first. DAYS is
the exception, and getting it wrong silently returns the negation rather than an error.DATEVALUE, not through ordinary numeric coercion.
Microsoft documents that "if either one of the date arguments is text, that argument is treated
as DATEVALUE(date_text)". This is a per-function coercion policy, not the engine-wide
text-to-number rule described in
coercion and lifting — and it drags DAYS into locale
dependence that the numeric path does not have. DAYS("3/1/2024", "1/1/2024") is a
locale-sensitive expression; DAYS(45352, 45292) is not.DAYS(end_date, start_date) — both required.
end_date — the later endpoint by convention, though nothing requires it to be later; a start after the end simply gives a negative result.
start_date — the earlier endpoint by convention.
Both arguments accept either a numeric serial or text. The documentation's own wording keeps the
two paths separate: numbers are subtracted, text is parsed by DATEVALUE first. Microsoft also
notes that the result is an integer without time components, so fractional serials contribute no
fractional days.
The argument position most often misused is the first one. Because the function is named for a
quantity rather than a direction, readers frequently write DAYS(start, end) and get a negative
number that then flows quietly into a downstream calculation.
Returns a Number: an integer count of days, negative when start_date is later than end_date.
DAYS(2.4, 1.6) is 1 under the first and 0 under the second. This is not
settled here.DAYS(61, 59) is 2 as arithmetic
and one day too many as a calendar fact. See FUNC.DATE.As documented on the Microsoft page:
#NUM! when numeric date arguments fall outside the range of valid dates.#VALUE! when a text argument cannot be parsed as a valid date.An error value passed as either argument propagates in the ordinary way.
DAYS the wrong behaviour for text, because ordinary numeric
coercion does not parse "1-Jan-2024" and DATEVALUE does.DAYS disagree with subtraction, which is the one thing the
documentation guarantees it does not do.Quoted from the public repository DnaCalc/DnaCalc, crates calc-func and calc-fml, at commit 9e1884369a67. Comments are the source's own. A kernel shared with other functions appears once, on its module page.
DAYS · 8 lines · calc-func/src/catalogue/dates.rs on GitHub9 days_fn "DAYS" (2, 2) [V "end_date", V "start_date"] |s, a, sv| {
if let Some(code) = a.iter().find_map(CalcValue::as_error) {
return fail(code);
}
let end = date_arg(s, a, 0)?;
let start = date_arg(s, a, 1)?;
out(s, k::days(end, start))
}
environment catalogue/datessystem catalogue/datesto_1900 catalogue/datesdate_arg catalogue/datesdays ported/date_kernelsNo implementation has been published with a Handbook test suite for this function.
The recorded environments below distinguish a reading from a same-input comparison. Counts describe captured inputs in each environment; overlapping captures and comparisons are not totals of unique worksheet calls.
| Excel 16.0 build | Platform and CPU | Captured inputs |
|---|---|---|
| 20430 | Windows, 64-bit, CPU not recorded | 9,565 |
The record contains no same-input comparison between these environments. Reading different inputs on different builds does not establish either a version change or cross-build agreement.
Recorded environments and comparison details.
Windows, 64-bit, CPU not recorded
9,565 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.
− operator. end − start on two date serials gives the same number for numeric
arguments and is not equivalent for text arguments, because − uses the engine's ordinary
text-to-number coercion while DAYS is documented to use DATEVALUE. This is the sharpest
reason to prefer DAYS when inputs may be text — and to prefer − when they may not, since
DAYS then buys nothing but a locale dependency."D" — the same count, but with start-first argument
order and with a documented #NUM! when start is after end, where DAYS simply goes negative.No named variants are recorded yet.
Suggest a correction or contribute an implementation · For agents