如何将date列中存储的date转换为date值

我正在用=tbl.ImportDelimited(file.OpenText(*path*))导入一个CSV文件(它有849999行),并试图过滤=tbl.Filter(*table*, "Date", ">"&G11) – 其中G11是一个date – 发生了什么事是它将date列转换为文本,不会过滤是否有办法强制它将该列识别为date?

我试图用=tbl.CalculateColumn(*table*, "Date", DATEVALUE(), "Date")覆盖列,但收到以下错误:

日期转换错误

我错过了什么?

就像你说的那样,它看起来像是从文件中导入文本的date列,所以使用>进行过滤将不起作用,因为该值实际上是文本,即使它看起来像date。

要将文本转换为date,可以使用DATEVALUE()函数,但需要将其作为文本片段传递给tbl.CalculateColumn()。 在你的例子中,实际上是调用DATEVALUE()并将结果传递给tbl.CalculateColumn()。

您应该发现以下对公式的更改将成功将文本值转换为date:

 =tbl.CalculateColumn(table, "Date", "DATEVALUE") 

传递"DATEVALUE"作为function参数是短格式片断语法的一个例子。 我也省略了resultColumn参数,因为如果不指定它,Schematiq会覆盖input列的值。 以下公式更长,但完全等同:

 =tbl.CalculateColumn(table, "Date", "x => DATEVALUE(x)", "Date") 

正如你可以想象的,有许多不同的Excel公式可以用来从文本转换到date。 如果你知道你期望的确切格式,类似的东西也可以正常工作:

 =tbl.CalculateColumn(table, "Date", "x => DATE(RIGHT(x, 4), MID(x, 4, 2), LEFT(x, 2))", "Date")