mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
解决ClickHouse 批量更新DateTime问题
This commit is contained in:
parent
54e1ed6fdb
commit
9aef33e3df
@ -22,7 +22,7 @@ namespace FreeSql.Tests.ClickHouse
|
||||
_fsql = new FreeSqlBuilder().UseConnectionString(DataType.ClickHouse,
|
||||
"Host=192.168.1.123;Port=8123;Database=test_issue;Compress=True;Min Pool Size=1")
|
||||
.UseMonitorCommand(cmd => _output.WriteLine($"线程:{cmd.CommandText}\r\n"))
|
||||
.UseNoneCommandParameter(true)
|
||||
.UseNoneCommandParameter(false)
|
||||
.UseAdoConnectionPool(true)
|
||||
.Build();
|
||||
}
|
||||
@ -32,25 +32,35 @@ namespace FreeSql.Tests.ClickHouse
|
||||
[Fact]
|
||||
public void TestIssue1813()
|
||||
{
|
||||
//var personsUpdate = new List<Person>
|
||||
//{
|
||||
// new Person
|
||||
// {
|
||||
// Id = 1,
|
||||
// Name = $"test2{DateTime.Now.Millisecond}",
|
||||
// Age = 20,
|
||||
// CreateTime = DateTime.Now
|
||||
// },
|
||||
// new Person
|
||||
// {
|
||||
// Id = 2,
|
||||
// Name = "test3"+ 286,
|
||||
// Age = 22,
|
||||
// CreateTime = DateTime.Now
|
||||
// }
|
||||
//};
|
||||
//普通修改
|
||||
_fsql.Update<Person>()
|
||||
.Set(p => p.Name == "update_name")
|
||||
.Set(p => p.UpdateTime == DateTime.Now)
|
||||
.Where(p => p.Id == "25e8d92e-29f2-43ff-b861-9ade0eec4041")
|
||||
.ExecuteAffrows();
|
||||
|
||||
//批量修改
|
||||
var updatePerson = new List<Person>();
|
||||
updatePerson.Add(new Person
|
||||
{
|
||||
Id = "9cd7af52-85cc-4d26-898a-4020cadb0491",
|
||||
Name = "update_name1",
|
||||
UpdateTime = DateTime.Now
|
||||
});
|
||||
|
||||
updatePerson.Add(new Person
|
||||
{
|
||||
Id = "bd9f9ed6-bd03-4675-abb4-12b7fdac7678",
|
||||
Name = "update_name2",
|
||||
UpdateTime = DateTime.Now
|
||||
});
|
||||
|
||||
_fsql.Update<Person>().SetSource(updatePerson).UpdateColumns(person => new
|
||||
{
|
||||
person.Name,
|
||||
person.UpdateTime,
|
||||
}).ExecuteAffrows();
|
||||
|
||||
//_fsql.Update<Person>().SetSource()
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
@ -7,6 +7,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using DateTime = System.DateTime;
|
||||
|
||||
namespace FreeSql.ClickHouse.Curd
|
||||
{
|
||||
@ -167,6 +168,16 @@ namespace FreeSql.ClickHouse.Curd
|
||||
|
||||
var colsql = _noneParameter ? _commonUtils.GetNoneParamaterSqlValue(_paramsSource, "u", col, col.Attribute.MapType, val) :
|
||||
_commonUtils.QuoteWriteParamterAdapter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"p_{_paramsSource.Count}"));
|
||||
|
||||
//判断是否是DateTime类型,如果是DateTime类型,需要转换成ClickHouse支持的时间格式
|
||||
if (col.Attribute.MapType == typeof(DateTime) || col.Attribute.MapType == typeof(DateTime?) )
|
||||
{
|
||||
//获取当前实时区
|
||||
var timeZone = TimeZoneInfo.Local;
|
||||
|
||||
colsql = $"toDateTime({colsql},'Asia/Shanghai')";
|
||||
}
|
||||
|
||||
cwsb.Append(_commonUtils.RewriteColumn(col, colsql));
|
||||
if (_noneParameter == false)
|
||||
_commonUtils.AppendParamter(_paramsSource, null, col, col.Attribute.MapType, val);
|
||||
|
Loading…
x
Reference in New Issue
Block a user