TO_DATE
Unsupported (not recognized)Category: Parser · Last tested 2026-09-01
Real compatibility results for the TO_DATE function: executed in Excel for the web, Google Sheets and LibreOffice Calc, measured against Google’s published documentation. Excel does not document TO_DATE, so this page makes no claim about Excel. Syntax and links to that documentation are below.
Support matrix
| Engine | Documented | Live-tested | Verdict |
|---|---|---|---|
| Excel (desktop) | No | n/a (not an Excel function) | n/a |
| Excel for the web | — | Yes (recalc, 2026-09-01) | Unsupported (not recognized) |
| Google Sheets | Yes | Yes (Drive import, 2026-09-01) | Supported, behaves as documented |
| LibreOffice Calc | No | Yes (25.8.7.3, 2026-09-01) | Unsupported (not recognized) |
LibreOffice version history
We executed the same test cases under each LibreOffice release to show exactly when TO_DATE’s support changed — not documentation claims, real results.
| LibreOffice version | Verdict | Tested |
|---|---|---|
| 24.2.0.3 | Unsupported (not recognized) | 2026-09-01 |
| 24.8.7.2 | Unsupported (not recognized) | 2026-09-01 |
| 25.2.0.3 | Unsupported (not recognized) | 2026-09-01 |
| 25.8.7.3 | Unsupported (not recognized) | 2026-09-01 |
Why isn't TO_DATE working in LibreOffice?
LibreOffice Calc does not implement TO_DATE as of 25.8.7.3 — in our
executed tests it returns a #NAME? (unrecognized function) error. This is not a typo or a
settings problem, and saving the file as .xlsx does not change it: the function simply isn’t
available yet.
Watch the LibreOffice version support page —
we re-run every test on each new release, so it will flip to Supported here as soon as it lands.
Discovered quirks
-
=TO_DATE(25405)-DATE(1969,7,21) on
Excel for the web returned
#NAME?, but the documented/expected
result is 0.
Provenance
DERIVED, not published: the page prints TO_DATE(25405) as a Sample Usage formula with NO result beside it. The rule it is derived from is the page's own sentence "If value is a number or a reference to a cell containing a numeric value, TO_DATE returns value converted to a date, interpreting value as number of days since December 30, 1899." Derived independently: 1899-12-30 + 25405 days = 1969-07-21 (computed with Python's proleptic Gregorian calendar, which agrees with the 1899-12-30-origin serial system for every date after 1900-03-01). Asserted as a DIFFERENCE against DATE(1969,7,21) rather than as a serial or a formatted string, so the case is independent of the locale's date format and of whether the engine hands the harness a date object or a number. WHAT THIS HARNESS CAN AND CANNOT SEE FOR A TO_* FUNCTION. The TO_* parsers are FORMATTING functions: the page itself describes the operation as equivalent to applying a Format > Number command from the menu bar. What changes is the cell's number format, not the number. This harness records the computed VALUE read back from a recalculated .xlsx, so the format half of the documented behaviour is invisible to it and is NOT asserted anywhere in this file. What is asserted is the value half, which the page states outright: the underlying number survives the conversion unchanged, and a non-numeric argument is returned unmodified. BATCH PROVENANCE (batch I, group 1 -- the last eight Google-documented functions in the corpus, closing the group A set sheets-lo-only-plan.md opened). This function has x == false in docs/data/compat.json: Microsoft does not document it at all, so this corpus makes NO claim about it in that engine and nothing here is measured against that vendor's documentation. The authority is Google's own support.google.com function page, cited by full URL and by the date it was read (2026-08-31) -- Google publishes no version number for these pages, so a bare URL dates nothing. WHAT GOOGLE PRINTS ON THESE EIGHT PAGES IS LESS THAN IT LOOKS, AND EVERY NOTE SAYS SO. Each page carries a 'Sample Usage' block of FORMULAS WITH NO RESULTS and an 'Examples' section that is a live embedded spreadsheet rather than article text, so ACROSS ALL EIGHT PAGES THERE IS NOT ONE PUBLISHED FORMULA/RESULT PAIR IN THE BODY. Every expected value in this group is therefore DERIVED from the page's own stated semantics and names the sentence it came from; the one exception is UNARY_PERCENT, whose one-line description states its result inline. No value was taken from a search snippet, a blog or a mirror. LIBREOFFICE: probed before execution on all four pinned builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) in five storage spellings -- plain, _xlfn., COM.MICROSOFT., ORG.OPENOFFICE. and _xlfn.ORG.OPENOFFICE. -- and #NAME? under every one of them on every build, so the expected values below describe Google Sheets and the LibreOffice column records absence. (A separate check confirms the absence is real rather than a name-mapping artefact: round-tripping these eight names through LibreOffice's own formula parser and its .xlsx export writes them back lower-cased -- 'to_date', 'uminus' -- which is what LibreOffice does with an identifier it does not recognise as a function at all.) Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239.; MISMATCH vs expected: expected 0, got '#NAME?'
-
=N(TO_DATE(25405)) on
Excel for the web returned
#NAME?, but the documented/expected
result is 25405.
Provenance
DERIVED from the Notes bullet "TO_DATE is the inverse of N as applied to a date". If TO_DATE only re-formats the number it is given, then N -- which reads a date back as its serial -- must return the original argument. No constant was taken from the page; 25405 is the page's own sample argument coming back out. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239.; MISMATCH vs expected: expected 25405, got '#NAME?'
-
=ROUND(TO_DATE(10/10/2000)+0,10) on
Excel for the web returned
#NAME?, but the documented/expected
result is 0.0005.
Provenance
DERIVED from the Notes bullet, which states the arithmetic outright: "TO_DATE does not autoconvert number formats in the same way as direct entry into cells. Therefore, TO_DATE(10/10/2000) is interpreted as TO_DATE(0.0005), the quotient of 10 divided by 10 divided by 2000." Derived independently: 10/10 = 1 and 1/2000 = 0.0005 exactly. The bullet names the intermediate value 0.0005 but prints no result for the call, so the assertion is that the VALUE survives -- +0 strips the date formatting the function applies, and ROUND(...,10) keeps the case free of last-bit formatting differences. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239.; MISMATCH vs expected: expected 0.0005, got '#NAME?'
-
=TO_DATE("not a number") on
Excel for the web returned
#NAME?, but the documented/expected
result is not a number.
Provenance
DERIVED from the sentence "If value is not a number or a reference to a cell containing a numeric value, TO_DATE returns value without modification." The page gives no example of this, so the argument here is a plain string chosen to be unambiguously non-numeric. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239.; MISMATCH vs expected: expected 'not a number', got '#NAME?'
-
=ROUND(TO_DATE(40826.4375)-DATE(2011,10,10),10) on
Excel for the web returned
#NAME?, but the documented/expected
result is 0.4375.
Provenance
DERIVED from "fractional values indicate time of day past midnight", applied to the page's own Sample Usage formula TO_DATE(40826.4375) (again printed with no result). Derived independently: 1899-12-30 + 40826 days = 2011-10-10, and the remaining 0.4375 of a day is 10h30m past midnight. Asserted as the difference from DATE(2011,10,10) so both halves of the claim -- the date and the fraction -- are checked in one value without depending on a locale's time format. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239.; MISMATCH vs expected: expected 0.4375, got '#NAME?'
-
=TO_DATE(25405)-DATE(1969,7,21) on
LibreOffice Calc returned
#NAME?, but the documented/expected
result is 0.
Provenance
DERIVED, not published: the page prints TO_DATE(25405) as a Sample Usage formula with NO result beside it. The rule it is derived from is the page's own sentence "If value is a number or a reference to a cell containing a numeric value, TO_DATE returns value converted to a date, interpreting value as number of days since December 30, 1899." Derived independently: 1899-12-30 + 25405 days = 1969-07-21 (computed with Python's proleptic Gregorian calendar, which agrees with the 1899-12-30-origin serial system for every date after 1900-03-01). Asserted as a DIFFERENCE against DATE(1969,7,21) rather than as a serial or a formatted string, so the case is independent of the locale's date format and of whether the engine hands the harness a date object or a number. WHAT THIS HARNESS CAN AND CANNOT SEE FOR A TO_* FUNCTION. The TO_* parsers are FORMATTING functions: the page itself describes the operation as equivalent to applying a Format > Number command from the menu bar. What changes is the cell's number format, not the number. This harness records the computed VALUE read back from a recalculated .xlsx, so the format half of the documented behaviour is invisible to it and is NOT asserted anywhere in this file. What is asserted is the value half, which the page states outright: the underlying number survives the conversion unchanged, and a non-numeric argument is returned unmodified. BATCH PROVENANCE (batch I, group 1 -- the last eight Google-documented functions in the corpus, closing the group A set sheets-lo-only-plan.md opened). This function has x == false in docs/data/compat.json: Microsoft does not document it at all, so this corpus makes NO claim about it in that engine and nothing here is measured against that vendor's documentation. The authority is Google's own support.google.com function page, cited by full URL and by the date it was read (2026-08-31) -- Google publishes no version number for these pages, so a bare URL dates nothing. WHAT GOOGLE PRINTS ON THESE EIGHT PAGES IS LESS THAN IT LOOKS, AND EVERY NOTE SAYS SO. Each page carries a 'Sample Usage' block of FORMULAS WITH NO RESULTS and an 'Examples' section that is a live embedded spreadsheet rather than article text, so ACROSS ALL EIGHT PAGES THERE IS NOT ONE PUBLISHED FORMULA/RESULT PAIR IN THE BODY. Every expected value in this group is therefore DERIVED from the page's own stated semantics and names the sentence it came from; the one exception is UNARY_PERCENT, whose one-line description states its result inline. No value was taken from a search snippet, a blog or a mirror. LIBREOFFICE: probed before execution on all four pinned builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) in five storage spellings -- plain, _xlfn., COM.MICROSOFT., ORG.OPENOFFICE. and _xlfn.ORG.OPENOFFICE. -- and #NAME? under every one of them on every build, so the expected values below describe Google Sheets and the LibreOffice column records absence. (A separate check confirms the absence is real rather than a name-mapping artefact: round-tripping these eight names through LibreOffice's own formula parser and its .xlsx export writes them back lower-cased -- 'to_date', 'uminus' -- which is what LibreOffice does with an identifier it does not recognise as a function at all.) Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239.; MISMATCH vs expected: expected 0, got '#NAME?'
-
=N(TO_DATE(25405)) on
LibreOffice Calc returned
#NAME?, but the documented/expected
result is 25405.
Provenance
DERIVED from the Notes bullet "TO_DATE is the inverse of N as applied to a date". If TO_DATE only re-formats the number it is given, then N -- which reads a date back as its serial -- must return the original argument. No constant was taken from the page; 25405 is the page's own sample argument coming back out. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239.; MISMATCH vs expected: expected 25405, got '#NAME?'
-
=ROUND(TO_DATE(10/10/2000)+0,10) on
LibreOffice Calc returned
#NAME?, but the documented/expected
result is 0.0005.
Provenance
DERIVED from the Notes bullet, which states the arithmetic outright: "TO_DATE does not autoconvert number formats in the same way as direct entry into cells. Therefore, TO_DATE(10/10/2000) is interpreted as TO_DATE(0.0005), the quotient of 10 divided by 10 divided by 2000." Derived independently: 10/10 = 1 and 1/2000 = 0.0005 exactly. The bullet names the intermediate value 0.0005 but prints no result for the call, so the assertion is that the VALUE survives -- +0 strips the date formatting the function applies, and ROUND(...,10) keeps the case free of last-bit formatting differences. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239.; MISMATCH vs expected: expected 0.0005, got '#NAME?'
-
=TO_DATE("not a number") on
LibreOffice Calc returned
#NAME?, but the documented/expected
result is not a number.
Provenance
DERIVED from the sentence "If value is not a number or a reference to a cell containing a numeric value, TO_DATE returns value without modification." The page gives no example of this, so the argument here is a plain string chosen to be unambiguously non-numeric. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239.; MISMATCH vs expected: expected 'not a number', got '#NAME?'
-
=ROUND(TO_DATE(40826.4375)-DATE(2011,10,10),10) on
LibreOffice Calc returned
#NAME?, but the documented/expected
result is 0.4375.
Provenance
DERIVED from "fractional values indicate time of day past midnight", applied to the page's own Sample Usage formula TO_DATE(40826.4375) (again printed with no result). Derived independently: 1899-12-30 + 40826 days = 2011-10-10, and the remaining 0.4375 of a day is 10h30m past midnight. Asserted as the difference from DATE(2011,10,10) so both halves of the claim -- the date and the fraction -- are checked in one value without depending on a locale's time format. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239.; MISMATCH vs expected: expected 0.4375, got '#NAME?'
Executed test cases
Excel for the web (executed 2026-09-01 via OneDrive recalculation)
These values come from Excel for the web, not from desktop Excel. They are two different implementations of the calculation engine, and this run measured only the web one: the corpus was uploaded to OneDrive as .xlsx, recalculated by Excel for the web on open, and downloaded again for readback. Excel for the web is a rolling service with no pinnable version, so the run is identified by its date. Where a value here disagrees with the Expected column — which is Microsoft’s documentation of the desktop product — we cannot tell you whether the web engine diverges from the desktop one or the documentation is wrong about both, because we do not run desktop Excel.
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =TO_DATE(25405)-DATE(1969,7,21) | The page's own Sample Usage input, asserted against the date its own rule requires | #NAME? | 0ProvenanceDERIVED, not published: the page prints TO_DATE(25405) as a Sample Usage formula with NO result beside it. The rule it is derived from is the page's own sentence "If value is a number or a reference to a cell containing a numeric value, TO_DATE returns value converted to a date, interpreting value as number of days since December 30, 1899." Derived independently: 1899-12-30 + 25405 days = 1969-07-21 (computed with Python's proleptic Gregorian calendar, which agrees with the 1899-12-30-origin serial system for every date after 1900-03-01). Asserted as a DIFFERENCE against DATE(1969,7,21) rather than as a serial or a formatted string, so the case is independent of the locale's date format and of whether the engine hands the harness a date object or a number. WHAT THIS HARNESS CAN AND CANNOT SEE FOR A TO_* FUNCTION. The TO_* parsers are FORMATTING functions: the page itself describes the operation as equivalent to applying a Format > Number command from the menu bar. What changes is the cell's number format, not the number. This harness records the computed VALUE read back from a recalculated .xlsx, so the format half of the documented behaviour is invisible to it and is NOT asserted anywhere in this file. What is asserted is the value half, which the page states outright: the underlying number survives the conversion unchanged, and a non-numeric argument is returned unmodified. BATCH PROVENANCE (batch I, group 1 -- the last eight Google-documented functions in the corpus, closing the group A set sheets-lo-only-plan.md opened). This function has x == false in docs/data/compat.json: Microsoft does not document it at all, so this corpus makes NO claim about it in that engine and nothing here is measured against that vendor's documentation. The authority is Google's own support.google.com function page, cited by full URL and by the date it was read (2026-08-31) -- Google publishes no version number for these pages, so a bare URL dates nothing. WHAT GOOGLE PRINTS ON THESE EIGHT PAGES IS LESS THAN IT LOOKS, AND EVERY NOTE SAYS SO. Each page carries a 'Sample Usage' block of FORMULAS WITH NO RESULTS and an 'Examples' section that is a live embedded spreadsheet rather than article text, so ACROSS ALL EIGHT PAGES THERE IS NOT ONE PUBLISHED FORMULA/RESULT PAIR IN THE BODY. Every expected value in this group is therefore DERIVED from the page's own stated semantics and names the sentence it came from; the one exception is UNARY_PERCENT, whose one-line description states its result inline. No value was taken from a search snippet, a blog or a mirror. LIBREOFFICE: probed before execution on all four pinned builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) in five storage spellings -- plain, _xlfn., COM.MICROSOFT., ORG.OPENOFFICE. and _xlfn.ORG.OPENOFFICE. -- and #NAME? under every one of them on every build, so the expected values below describe Google Sheets and the LibreOffice column records absence. (A separate check confirms the absence is real rather than a name-mapping artefact: round-tripping these eight names through LibreOffice's own formula parser and its .xlsx export writes them back lower-cased -- 'to_date', 'uminus' -- which is what LibreOffice does with an identifier it does not recognise as a function at all.) Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Mismatch |
| =N(TO_DATE(25405)) | The documented inverse relationship with N, asserted structurally | #NAME? | 25405ProvenanceDERIVED from the Notes bullet "TO_DATE is the inverse of N as applied to a date". If TO_DATE only re-formats the number it is given, then N -- which reads a date back as its serial -- must return the original argument. No constant was taken from the page; 25405 is the page's own sample argument coming back out. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Mismatch |
| =ROUND(TO_DATE(10/10/2000)+0,10) | The page's explicit warning that TO_DATE does not parse a slash-separated date | #NAME? | 0.0005ProvenanceDERIVED from the Notes bullet, which states the arithmetic outright: "TO_DATE does not autoconvert number formats in the same way as direct entry into cells. Therefore, TO_DATE(10/10/2000) is interpreted as TO_DATE(0.0005), the quotient of 10 divided by 10 divided by 2000." Derived independently: 10/10 = 1 and 1/2000 = 0.0005 exactly. The bullet names the intermediate value 0.0005 but prints no result for the call, so the assertion is that the VALUE survives -- +0 strips the date formatting the function applies, and ROUND(...,10) keeps the case free of last-bit formatting differences. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Mismatch |
| =TO_DATE("not a number") | The documented pass-through for a non-numeric argument | #NAME? | not a numberProvenanceDERIVED from the sentence "If value is not a number or a reference to a cell containing a numeric value, TO_DATE returns value without modification." The page gives no example of this, so the argument here is a plain string chosen to be unambiguously non-numeric. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Mismatch |
| =ROUND(TO_DATE(40826.4375)-DATE(2011,10,10),10) | The page's second Sample Usage input, whose fractional part is a time of day | #NAME? | 0.4375ProvenanceDERIVED from "fractional values indicate time of day past midnight", applied to the page's own Sample Usage formula TO_DATE(40826.4375) (again printed with no result). Derived independently: 1899-12-30 + 40826 days = 2011-10-10, and the remaining 0.4375 of a day is 10h30m past midnight. Asserted as the difference from DATE(2011,10,10) so both halves of the claim -- the date and the fraction -- are checked in one value without depending on a locale's time format. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Mismatch |
Google Sheets (executed 2026-09-01 via Drive import)
Google Sheets is a rolling service with no pinnable version, so this run is identified by its date. The corpus was imported to Drive as .xlsx, recalculated by Sheets, and exported back for readback.
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =TO_DATE(25405)-DATE(1969,7,21) | The page's own Sample Usage input, asserted against the date its own rule requires | 0 | 0ProvenanceDERIVED, not published: the page prints TO_DATE(25405) as a Sample Usage formula with NO result beside it. The rule it is derived from is the page's own sentence "If value is a number or a reference to a cell containing a numeric value, TO_DATE returns value converted to a date, interpreting value as number of days since December 30, 1899." Derived independently: 1899-12-30 + 25405 days = 1969-07-21 (computed with Python's proleptic Gregorian calendar, which agrees with the 1899-12-30-origin serial system for every date after 1900-03-01). Asserted as a DIFFERENCE against DATE(1969,7,21) rather than as a serial or a formatted string, so the case is independent of the locale's date format and of whether the engine hands the harness a date object or a number. WHAT THIS HARNESS CAN AND CANNOT SEE FOR A TO_* FUNCTION. The TO_* parsers are FORMATTING functions: the page itself describes the operation as equivalent to applying a Format > Number command from the menu bar. What changes is the cell's number format, not the number. This harness records the computed VALUE read back from a recalculated .xlsx, so the format half of the documented behaviour is invisible to it and is NOT asserted anywhere in this file. What is asserted is the value half, which the page states outright: the underlying number survives the conversion unchanged, and a non-numeric argument is returned unmodified. BATCH PROVENANCE (batch I, group 1 -- the last eight Google-documented functions in the corpus, closing the group A set sheets-lo-only-plan.md opened). This function has x == false in docs/data/compat.json: Microsoft does not document it at all, so this corpus makes NO claim about it in that engine and nothing here is measured against that vendor's documentation. The authority is Google's own support.google.com function page, cited by full URL and by the date it was read (2026-08-31) -- Google publishes no version number for these pages, so a bare URL dates nothing. WHAT GOOGLE PRINTS ON THESE EIGHT PAGES IS LESS THAN IT LOOKS, AND EVERY NOTE SAYS SO. Each page carries a 'Sample Usage' block of FORMULAS WITH NO RESULTS and an 'Examples' section that is a live embedded spreadsheet rather than article text, so ACROSS ALL EIGHT PAGES THERE IS NOT ONE PUBLISHED FORMULA/RESULT PAIR IN THE BODY. Every expected value in this group is therefore DERIVED from the page's own stated semantics and names the sentence it came from; the one exception is UNARY_PERCENT, whose one-line description states its result inline. No value was taken from a search snippet, a blog or a mirror. LIBREOFFICE: probed before execution on all four pinned builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) in five storage spellings -- plain, _xlfn., COM.MICROSOFT., ORG.OPENOFFICE. and _xlfn.ORG.OPENOFFICE. -- and #NAME? under every one of them on every build, so the expected values below describe Google Sheets and the LibreOffice column records absence. (A separate check confirms the absence is real rather than a name-mapping artefact: round-tripping these eight names through LibreOffice's own formula parser and its .xlsx export writes them back lower-cased -- 'to_date', 'uminus' -- which is what LibreOffice does with an identifier it does not recognise as a function at all.) Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Matched |
| =N(TO_DATE(25405)) | The documented inverse relationship with N, asserted structurally | 25405 | 25405ProvenanceDERIVED from the Notes bullet "TO_DATE is the inverse of N as applied to a date". If TO_DATE only re-formats the number it is given, then N -- which reads a date back as its serial -- must return the original argument. No constant was taken from the page; 25405 is the page's own sample argument coming back out. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Matched |
| =ROUND(TO_DATE(10/10/2000)+0,10) | The page's explicit warning that TO_DATE does not parse a slash-separated date | 0.0005 | 0.0005ProvenanceDERIVED from the Notes bullet, which states the arithmetic outright: "TO_DATE does not autoconvert number formats in the same way as direct entry into cells. Therefore, TO_DATE(10/10/2000) is interpreted as TO_DATE(0.0005), the quotient of 10 divided by 10 divided by 2000." Derived independently: 10/10 = 1 and 1/2000 = 0.0005 exactly. The bullet names the intermediate value 0.0005 but prints no result for the call, so the assertion is that the VALUE survives -- +0 strips the date formatting the function applies, and ROUND(...,10) keeps the case free of last-bit formatting differences. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Matched |
| =TO_DATE("not a number") | The documented pass-through for a non-numeric argument | not a number | not a numberProvenanceDERIVED from the sentence "If value is not a number or a reference to a cell containing a numeric value, TO_DATE returns value without modification." The page gives no example of this, so the argument here is a plain string chosen to be unambiguously non-numeric. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Matched |
| =ROUND(TO_DATE(40826.4375)-DATE(2011,10,10),10) | The page's second Sample Usage input, whose fractional part is a time of day | 0.4375 | 0.4375ProvenanceDERIVED from "fractional values indicate time of day past midnight", applied to the page's own Sample Usage formula TO_DATE(40826.4375) (again printed with no result). Derived independently: 1899-12-30 + 40826 days = 2011-10-10, and the remaining 0.4375 of a day is 10h30m past midnight. Asserted as the difference from DATE(2011,10,10) so both halves of the claim -- the date and the fraction -- are checked in one value without depending on a locale's time format. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Matched |
LibreOffice Calc 25.8.7.3 (tested 2026-09-01)
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =TO_DATE(25405)-DATE(1969,7,21) | The page's own Sample Usage input, asserted against the date its own rule requires | #NAME? | 0ProvenanceDERIVED, not published: the page prints TO_DATE(25405) as a Sample Usage formula with NO result beside it. The rule it is derived from is the page's own sentence "If value is a number or a reference to a cell containing a numeric value, TO_DATE returns value converted to a date, interpreting value as number of days since December 30, 1899." Derived independently: 1899-12-30 + 25405 days = 1969-07-21 (computed with Python's proleptic Gregorian calendar, which agrees with the 1899-12-30-origin serial system for every date after 1900-03-01). Asserted as a DIFFERENCE against DATE(1969,7,21) rather than as a serial or a formatted string, so the case is independent of the locale's date format and of whether the engine hands the harness a date object or a number. WHAT THIS HARNESS CAN AND CANNOT SEE FOR A TO_* FUNCTION. The TO_* parsers are FORMATTING functions: the page itself describes the operation as equivalent to applying a Format > Number command from the menu bar. What changes is the cell's number format, not the number. This harness records the computed VALUE read back from a recalculated .xlsx, so the format half of the documented behaviour is invisible to it and is NOT asserted anywhere in this file. What is asserted is the value half, which the page states outright: the underlying number survives the conversion unchanged, and a non-numeric argument is returned unmodified. BATCH PROVENANCE (batch I, group 1 -- the last eight Google-documented functions in the corpus, closing the group A set sheets-lo-only-plan.md opened). This function has x == false in docs/data/compat.json: Microsoft does not document it at all, so this corpus makes NO claim about it in that engine and nothing here is measured against that vendor's documentation. The authority is Google's own support.google.com function page, cited by full URL and by the date it was read (2026-08-31) -- Google publishes no version number for these pages, so a bare URL dates nothing. WHAT GOOGLE PRINTS ON THESE EIGHT PAGES IS LESS THAN IT LOOKS, AND EVERY NOTE SAYS SO. Each page carries a 'Sample Usage' block of FORMULAS WITH NO RESULTS and an 'Examples' section that is a live embedded spreadsheet rather than article text, so ACROSS ALL EIGHT PAGES THERE IS NOT ONE PUBLISHED FORMULA/RESULT PAIR IN THE BODY. Every expected value in this group is therefore DERIVED from the page's own stated semantics and names the sentence it came from; the one exception is UNARY_PERCENT, whose one-line description states its result inline. No value was taken from a search snippet, a blog or a mirror. LIBREOFFICE: probed before execution on all four pinned builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) in five storage spellings -- plain, _xlfn., COM.MICROSOFT., ORG.OPENOFFICE. and _xlfn.ORG.OPENOFFICE. -- and #NAME? under every one of them on every build, so the expected values below describe Google Sheets and the LibreOffice column records absence. (A separate check confirms the absence is real rather than a name-mapping artefact: round-tripping these eight names through LibreOffice's own formula parser and its .xlsx export writes them back lower-cased -- 'to_date', 'uminus' -- which is what LibreOffice does with an identifier it does not recognise as a function at all.) Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Mismatch |
| =N(TO_DATE(25405)) | The documented inverse relationship with N, asserted structurally | #NAME? | 25405ProvenanceDERIVED from the Notes bullet "TO_DATE is the inverse of N as applied to a date". If TO_DATE only re-formats the number it is given, then N -- which reads a date back as its serial -- must return the original argument. No constant was taken from the page; 25405 is the page's own sample argument coming back out. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Mismatch |
| =ROUND(TO_DATE(10/10/2000)+0,10) | The page's explicit warning that TO_DATE does not parse a slash-separated date | #NAME? | 0.0005ProvenanceDERIVED from the Notes bullet, which states the arithmetic outright: "TO_DATE does not autoconvert number formats in the same way as direct entry into cells. Therefore, TO_DATE(10/10/2000) is interpreted as TO_DATE(0.0005), the quotient of 10 divided by 10 divided by 2000." Derived independently: 10/10 = 1 and 1/2000 = 0.0005 exactly. The bullet names the intermediate value 0.0005 but prints no result for the call, so the assertion is that the VALUE survives -- +0 strips the date formatting the function applies, and ROUND(...,10) keeps the case free of last-bit formatting differences. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Mismatch |
| =TO_DATE("not a number") | The documented pass-through for a non-numeric argument | #NAME? | not a numberProvenanceDERIVED from the sentence "If value is not a number or a reference to a cell containing a numeric value, TO_DATE returns value without modification." The page gives no example of this, so the argument here is a plain string chosen to be unambiguously non-numeric. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Mismatch |
| =ROUND(TO_DATE(40826.4375)-DATE(2011,10,10),10) | The page's second Sample Usage input, whose fractional part is a time of day | #NAME? | 0.4375ProvenanceDERIVED from "fractional values indicate time of day past midnight", applied to the page's own Sample Usage formula TO_DATE(40826.4375) (again printed with no result). Derived independently: 1899-12-30 + 40826 days = 2011-10-10, and the remaining 0.4375 of a day is 10h30m past midnight. Asserted as the difference from DATE(2011,10,10) so both halves of the claim -- the date and the fraction -- are checked in one value without depending on a locale's time format. Google's TO_DATE page, read live on 2026-08-31 at https://support.google.com/docs/answer/3094239. |
Mismatch |
Docs & syntax
- Google Sheets: official documentation
Where TO_DATE behaves differently
- Google-only functions: what ports to Excel and LibreOffice, and what does not
Executed: 47 functions Google documents and neither Microsoft nor LibreOffice does, 189 cases, 183 of them #NAME? in LibreOffice on all four pinned builds after five- and nine-spelling probes. QUERY and ARRAYFORMULA do not port; the operator functions do exactly; REGEXMATCH, REGEXTEST and REGEX are three different functions with three regex flavours.