日期格式:方法“ToString”没有重载需要 1 个参数

Posted

技术标签:

【中文标题】日期格式:方法“ToString”没有重载需要 1 个参数【英文标题】:Date Format: No overload for method "ToString" takes 1 arguments 【发布时间】:2021-11-04 15:30:25 【问题描述】:

当我尝试在我的代码中格式化日期时,我仍然遇到该错误:

Cmd.CommandText = @"
    DECLARE @command varchar(5000);
    DECLARE @RestoreList TABLE(DB_name VARCHAR(100), RS_name VARCHAR(100), RS_DateFinExercice DATE, RS_IsClosed VARCHAR(50));
    SELECT @command = 'IF ''?'' IN (SELECT name FROM sys.databases WHERE HAS_DBACCESS(name) = 1 AND CASE WHEN state_desc = ''ONLINE'' THEN OBJECT_ID( QUOTENAME( name ) + ''.[dbo].[P_DOSSIER]'',''U'' ) END IS NOT NULL) BEGIN USE [?] SELECT DB_name = CAST(DB_NAME() AS VARCHAR(100)), RS_name = CAST(a.D_RaisonSoc AS VARCHAR(100)), RS_DateFinExercice = CAST((SELECT Max(v) FROM (VALUES (a.[D_FinExo01]), (a.[D_FinExo02]), (a.[D_FinExo03]),(a.[D_FinExo04]),(a.[D_FinExo05])) AS value(v)) AS DATE), RS_IsClosed = CAST((SELECT CASE WHEN (SUM (CASE WHEN JM_Cloture !=2 THEN 1 ELSE 0 END)>0) THEN '''' ELSE ''arc'' END FROM F_JMOUV) AS VARCHAR(50)) FROM [dbo].[P_DOSSIER] a INNER JOIN F_JMOUV b ON DB_name() = DB_NAME() GROUP BY D_RaisonSoc, D_FinExo01, D_FinExo02, D_FinExo03, D_FinExo04, D_FinExo05 HAVING COUNT(*) > 1 END'
    INSERT INTO @RestoreList EXEC sp_MSforeachdb @command;
    SELECT * FROM @RestoreList ORDER BY DB_name;";

SqlDataReader dr = Cmd.ExecuteReader();

List<DBtoRestore> dgUIDcollection = new List<DBtoRestore>();

if (dr.HasRows)

    while (dr.Read())
    
        DBtoRestore currentdgUID = new DBtoRestore
            
                CUID_dbname = dr["DB_name"].ToString(),
                CUID_RaisonSoc = dr["RS_name"].ToString(),
                CUID_DateFinExercice = dr["RS_DateFinExercice"].ToString(),
                CUID_IsClosed = dr["RS_IsClosed"].ToString()
            ;

        dgUIDcollection.Add(currentdgUID);
    


dgDBtoRestore.ItemsSource = dgUIDcollection;
Cnx.Close();

问题出在这行代码上:

CUID_DateFinExercice = dr["RS_DateFinExercice"].ToString()

目前,我的数据网格报告日期为 01/01/2020 00:00:00。在 SQL 中,我有 01-01-2020 样式。

我想在我的数据网格中使用相同的样式。

我尝试过类似ToString("dd-MM-yyyy") 的方法,但在这种情况下我收到了错误。

有什么办法可以帮助我吗?

【问题讨论】:

您使用的是哪个 dbms? (也许是 MS SQL Server ???) 是的 ms.sql 服务器。 @FabriceBertrand 您应该在此表中提及该字段的类型。 胜利,我找到了解决方案:CUID_DateFinExercice = ((DateTime)dr["RS_DateFinExercice"]).ToString("dd-MM-yyyy"), 使用SqlDataReader.GetDateTime方法。 【参考方案1】:

解决方案:

CUID_DateFinExercice = ((DateTime)dr["RS_DateFinExercice"]).ToString("dd-MM-yyyy"),

【讨论】:

【参考方案2】:

转换为DateTime,然后调用ToString就可以了:

Convert.ToDateTime(dr["RS_DateFinExercice"]).ToString("dd-MM-yyyy")

【讨论】:

btw 有什么区别,除了是语法糖,Convert.ToDateTime 和 DateTime 演员?

以上是关于日期格式:方法“ToString”没有重载需要 1 个参数的主要内容,如果未能解决你的问题,请参考以下文章

Java中啥时候需要显示重载toString方法

方法“ToString”没有重载需要 1 个参数

用DateTime.ToString(string format)输出不同格式的日期

Java中啥时候需要显示重载toString方法

怎么解决“ToString”方法没有采用“1”个参数的重载

如何重载单个变量的TOSTRING方法 C#中