服务器具有与客户端不同格式的日期时间 - 递归更改格式日期时间客户端

Server with different format date time from client - recursively change format date time client

我有一个服务器,其日期时间格式与我的客户端不同。在我的客户端中,它使用 PM / AM,而我的服务器使用的是 24H 格式。当我尝试在 C# 中使用 DateTime 变量并在我的 SQL 服务器中使用数据类型 DateTime 时。在我的 SQL 服务器 2020-06-16 14:54:33.937 中,当我在服务器 PC 中尝试 运行 时,一切正常。但是当我在客户端尝试 运行 我在 SQL 服务器上的日期 returns int32 (不同的格式)。

我使用 dapper 作为 SQL 服务器助手。这是我 select 我 table

的功能
    private static void get_chat()
    {
        ConnectDB();

        string sql = "SELECT * FROM chat where to_user = " + MyLogin.id + " OR from_user = " + MyLogin.id;

        var queryResult = cnn.Query<SQLServer_Chat>(sql);
        SQLServer_Olah.Olah_Chat(queryResult);
        ArrayList list_id = SQLServer_Olah.List_chat_id(queryResult);

        CloseDB();

        get_chat_det(list_id);

    }

这是我的 SQLServer_Chat

class SQLServer_Chat
{
    public int id_chat { set; get; }
    public int to_user { set; get; }
    public int from_user { set; get; }
    public string last_chat { set; get; }
    public int to_unread { set; get; }
    public int from_unread { set; get; }
    public DateTime created_at { set; get; }
    public DateTime last_chat_time { set; get; }
    public string to_name { set; get; }
    public string from_name { set; get; }
}

希望有人能帮我解决这个问题,谢谢!!

既然你说数据库中的列是datetime,坦白说:格式不存在。我 预计 问题是你 保存 它不正确,因为你没有使用参数。显示的查询应该 真的,真的 是:

var queryResult = cnn.Query<SQLServer_Chat>(
    "SELECT * FROM chat where to_user = @id OR from_user = @id", new { MyLogin.id });

匿名类型 (new { ... }) 告诉 Dapper 添加一个名为 id 的参数,其类型和值是从评估 MyLogin.id.

中获得的

如果我们假设您的 save 代码 also 没有使用参数:那么 - 数据库中的数据现在完全不正确.解决方法:使用参数;这修复了:

  • SQL 注入问题(安全)
  • 文化(i18n/l10n)格式化(正确性)等问题
  • 数据库查询计划重用(性能)
  • dapper 策略重用(性能)