gpt4 book ai didi

c# - 不同本地化的 sql 中的 DateTime

转载 作者:行者123 更新时间:2023-11-30 22:32:40 25 4
gpt4 key购买 nike

在 sqllite 中我有日期并且我有一个查询:

INSERT INTO stats_project_funds(id_project, id_funds, month,stake, stake_in_units,  stake_in_percent, profit, profit_in_units, picks, hitrate, won, draw, lost)  
VALUES(1, 5, strftime("%Y-%m",'27.12.2011'), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

如您所见,日期是俄语格式。我的程序是用欧洲本地化语言编写的,日期格式为 27-12-2011。我必须更改此查询将适用于所有本地化吗?现在数据库中的这个字段是datatime类型。更好的解决方案是将其更改为 varchar 并插入字符串值?在字段中仅存储年份和月份。

我的查询是这样的:

DateTime newMonth = DateTime.Parse(month);
StringBuilder query = new StringBuilder();
query.AppendFormat(" INSERT INTO stats_project_funds(id_project, id_funds, month,stake, stake_in_units, "
+ " stake_in_percent, profit, profit_in_units, picks, hitrate, won, draw, lost) "
+ " VALUES({0}, {1}, strftime(\"%Y-%m\",'{2}'), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); ", idProject, idFunds, newMonth.Date.ToShortDateString());
return query.ToString();

谢谢

最佳答案

我会使用参数而不是 String Builder,它更干净、更安全且不易出错。这样,您就不必担心日期格式,这是使用参数的首选方式。

IDbCommand db = 
new SqlCommand("insert into table (myDateField) values (@myDateParam)");
db.Parameters.Add(new SqlParameter("@myDateParam", DateTime.Now));

关于c# - 不同本地化的 sql 中的 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8647359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com