英文:
Practical difference between TO_DATE and DATEVALUE
问题
这是一个案例。
我有一个表格,其中的第一列包含类似于“一些文本 2022年2月28日 一些文本”的记录。2023年2月20日
是我们在欧洲书写“2月20日”的方式(与美国通常写作2023年02月20日
进行对比)。
对于这些记录中的每一条,我需要提取其日期,加上10个工作日,并将结果日期放入下一列的相应单元格。看起来是这样的:
|--------------------------------|------------|
| 一些文本 2023年2月20日 一些文本 | 2023年3月6日 |
|--------------------------------|------------|
要计算该日期,以下公式似乎足够:
=工作日(正则提取($A1; "(?:\d{2}\.){2}\d{2,4}"); 10)
但是使用 TO_DATE
或 DATE_VALUE
的目的是什么呢?
有些人甚至建议将它们一起使用,像这样:
=工作日(TO_DATE(DATEVALUE(正则提取($A1; "(?:\d{2}\.){2}\d{2,4}"))); 10)
抱歉,如果问题听起来不专业,但我真的尽力独自搞清楚了两天。
英文:
Here is a case.
I have a sheet, the first column of which consists of records like "Some text 28.02.2022 some text". 20.02.2023
is how we write February, 20 in Europe (compare it with 02/20/2023
, which is how the same date will be typically written in US.)
For each of these records, I need to extract its date, add 10 working days, and put the resulting date in the respective cell of the next column. So it looks like this:
|--------------------------------|------------|
| Some text 20.02.2023 some text | 06.03.2023 |
|--------------------------------|------------|
To calculate that date, the following formula seems to be sufficient:
=WORKDAY(REGEXEXTRACT($A1; "(?:\d{2}\.){2}\d{2,4}"); 10)
But then what is the purpose of using TO_DATE
or DATE_VALUE
?
Some people even suggest to use them together, like this:
=WORKDAY(TO_DATE(DATEVALUE(REGEXEXTRACT($A1; "(?:\d{2}\.){2}\d{2,4}"))); 10)
Sorry if the question sound unprofessionally, but I really tried to figure it out myself for two days.
答案1
得分: 1
在您的情况下,TO_DATE
和DATEVALUE
都是多余的。
要理解其中的原因,您需要记住四件事:
-
TO_DATE
"将提供的数字转换为日期。" -
DATEVALUE
"将已知格式中的提供日期字符串转换为日期值。" -
日期就是数字。
-
Google Sheets足够"聪明",可以理解一个人尝试表示日期时的情况。
考虑到上述内容,只需使用REGEXEXTRACT
和WORKDAY
就可以满足两个条件(既是数字又是日期)。使用Google Sheets函数ISDATE
和ISNUMBER
(如下图所示)来查看它们的运作方式。
(为避免混淆,我趁机将您的工作日从+10更改为+15)
英文:
In your case both TO_DATE
and DATEVALUE
are redundant.
In order to understand why, you need to keep in mind 4 things.
-
TO_DATE
"Converts a provided number into a date." -
DATEVALUE
"Converts a provided date string in a known format into a date value." -
Dates are numbers
-
Google Sheets is "smart enough" to understand when one tries to express a date.
Taking the above into consideration both conditions are met (being a number and a date) by just using REGEXEXTRACT
and WORKDAY
.
Use Google Sheets functions ISDATE
and ISNUMBER
(as in the image below) to see how they play out.
(To avoid confusion I took the liberty of changing your working days from +10 to +15)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论