如何在 DataTable.Compute 中获取当前日期

How to get the current date in DataTable.Compute

提问人:Edward 提问时间:9/14/2022 更新时间:9/14/2022 访问量:312

问:

我正在尝试通过 计算字符串表达式。DataTable.Compute

像下面这样的简单字符串正在工作:

        static void Compare()
        {
            var logicalExpression = "'2022-09-14' <= '2029-12-31'";
            DataTable dt = new DataTable();
            var result = (bool)dt.Compute(logicalExpression, "");
        }

但是,日期是动态的,它应该是现在的日期。2022-09-14

我试图用 ,替换。它们都不起作用。'2022-09-14'Now()GETDATE()

有什么功能可以获取当前日期时间吗?Compute

C# net-core 数据表 system.data

评论


答:

0赞 Dmyto Holota 9/14/2022 #1

你可以像这样做:

var logicalExpression = "'" + DateTime.Now.ToShortDateString() + "' <= '2029-12-31'";

您还可以指定日期的格式,请参阅此帖子以获取示例。

评论

0赞 John 9/14/2022
您无法选择格式,除非“yyyy-MM-dd”是本地计算机的默认格式,否则此代码将不起作用。您需要对“yyyy-MM-dd”进行硬编码,然后进行文本比较,或者对“MM/dd/yyyy”进行硬编码并进行适当的日期比较。任何其他格式都不起作用。
0赞 Edward 9/15/2022
对于,它在 C# 编译器文件中,我需要使用字符串格式的函数,可以直接计算。DateTime.NowCompute
0赞 John 9/14/2022 #2
var logicalExpression = $"#{DateTime.Now:MM/dd/yyyy}# <= #12/31/2029#";

这是在此上下文中表示日期的正确方法。有关详细信息,请参阅此处

评论

0赞 Edward 9/15/2022
对于,它在 C# 编译器文件中,我需要使用字符串格式的函数,可以直接计算。DateTime.NowCompute
0赞 John 9/15/2022
@Edward,不,你不知道。 要求你把它作为参数传递。可以以您喜欢的任何方式构建。完全按照我所演示的方式执行将产生完全相同的结果,就像您在 中使用 中的函数一样。当然,反正没有这样的功能,如果你费心阅读文档,你就会知道,所以你别无选择,只能按照我展示的方式去做。这可能是一个问题的唯一原因是,如果您想创建一次,然后在不同时间多次使用它。只是不要那样做。Computestringstringstringstring