首页 > 解决方案 > SQL 选择查询 - 日期时间中没有秒或毫秒

问题描述

我有一个带有 tablePhoneHistory和 column的数据库Date,它的datetime数据类型。

我尝试使用这个答案,但我无法让它工作。因为我需要 aDataTable作为返回类型,而且我目前也在使用DataAdapter.

这是我目前拥有的。我只得到小时和分钟的日期,而不是秒和毫秒。

public static DataTable GetHistory()
{
    string query = "SELECT TOP 100 Date FROM PhoneHistory";

    return SelectSql(connectionString, query, "");
}

private static DataTable SelectSql(string connectionString, string query, string dtName, params object[] args)
{
    using (OleDbConnection con = new OleDbConnection(connectionString))
    {
        try
        {
            con.Open();
        }
        catch (Exception ex)
        {
            Global.Log($"Es konnte keine Verbindung zur Datenbank hergestellt werden! Fehlermeldung: [{ex.Message}]");
            return new DataTable(dtName);
        }

        using (OleDbCommand command = new OleDbCommand(query, con))
        {
            for (int i = 0; i < args.Length; i++)
            {
                command.Parameters.AddWithValue($"@p{i + 1}", args[i]);
            }

            using (OleDbDataAdapter a = new OleDbDataAdapter(command))
            {
                DataTable dt = new DataTable(dtName);

                try
                {
                    a.Fill(dt);
                    return dt;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.ToString());
                }

                return new DataTable(dtName);
            }
        }
    }
}

我需要使用DataTable作为返回类型。

我想得到这样的日期(这是它在数据库中的样子):

2019-07-30 10:10:16.526
2019-07-30 10:08:58.711

但我总是得到这样的日期(这是我用代码得到的):

2019-07-30 10:10:00.000
2019-07-30 10:08:00.000

标签: c#sqlsql-server

解决方案


DataAdapter 没有“减少”毫秒数。您需要在 DataGridView 中格式化列的单元格样式。在设置 DataSource 后添加它。

dgdHistory.Columns[0].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss.fff"

这将按照您描述的方式对其进行格式化。


推荐阅读