服务器具有与客户端不同格式的日期时间 - 递归更改格式日期时间客户端
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 策略重用(性能)
我有一个服务器,其日期时间格式与我的客户端不同。在我的客户端中,它使用 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 策略重用(性能)