TO_DATE和DATEVALUE之间的实际区别

huangapple go评论65阅读模式
英文:

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_DATEDATE_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_DATEDATEVALUE都是多余的。

要理解其中的原因,您需要记住四件事:

  1. TO_DATE
    "将提供的数字转换为日期。"

  2. DATEVALUE
    "将已知格式中的提供日期字符串转换为日期值。"

  3. 日期就是数字。

  4. Google Sheets足够"聪明",可以理解一个人尝试表示日期时的情况。

考虑到上述内容,只需使用REGEXEXTRACTWORKDAY就可以满足两个条件(既是数字又是日期)。使用Google Sheets函数ISDATEISNUMBER(如下图所示)来查看它们的运作方式。

(为避免混淆,我趁机将您的工作日从+10更改为+15)

TO_DATE和DATEVALUE之间的实际区别

英文:

In your case both TO_DATE and DATEVALUE are redundant.

In order to understand why, you need to keep in mind 4 things.

  1. TO_DATE
    "Converts a provided number into a date."

  2. DATEVALUE
    "Converts a provided date string in a known format into a date value."

  3. Dates are numbers

  4. 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)

TO_DATE和DATEVALUE之间的实际区别

huangapple
  • 本文由 发表于 2023年5月29日 04:45:40
  • 转载请务必保留本文链接:https://go.coder-hub.com/76353534.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定