update Expression DateTime ToString tests

This commit is contained in:
28810 2020-05-24 04:15:10 +08:00
parent 00ce7d93ce
commit e20f5324a0
9 changed files with 83 additions and 41 deletions

View File

@ -62,7 +62,13 @@ namespace FreeSql.Tests.MySqlConnectorExpression
//WHERE ((date_format(date_add(a__Type__Parent.`Time2`, interval (1) year), '%Y-%m-%d %H:%i:%s.%f') = now())) //WHERE ((date_format(date_add(a__Type__Parent.`Time2`, interval (1) year), '%Y-%m-%d %H:%i:%s.%f') = now()))
g.mysql.Insert(new Topic()).ExecuteAffrows(); g.mysql.Insert(new Topic()).ExecuteAffrows();
foreach (var dt in new[] { DateTime.Parse("2020-5-6 0:1:2"), DateTime.Parse("2020-11-16 13:21:22"), }) var dtn = DateTime.Parse("2020-1-1 0:0:0");
var dts = Enumerable.Range(1, 12).Select(a => dtn.AddMonths(a))
.Concat(Enumerable.Range(1, 31).Select(a => dtn.AddDays(a)))
.Concat(Enumerable.Range(1, 24).Select(a => dtn.AddHours(a)))
.Concat(Enumerable.Range(1, 60).Select(a => dtn.AddMinutes(a)))
.Concat(Enumerable.Range(1, 60).Select(a => dtn.AddSeconds(a)));
foreach (var dt in dts)
{ {
Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss.ffffff"), select.First(a => dt.ToString())); Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss.ffffff"), select.First(a => dt.ToString()));
Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss"), select.First(a => dt.ToString("yyyy-MM-dd HH:mm:ss"))); Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss"), select.First(a => dt.ToString("yyyy-MM-dd HH:mm:ss")));

View File

@ -62,7 +62,13 @@ namespace FreeSql.Tests.Odbc.MySqlExpression
//WHERE ((date_format(date_add(a__Type__Parent.`Time2`, interval (1) year), '%Y-%m-%d %H:%i:%s.%f') = now())) //WHERE ((date_format(date_add(a__Type__Parent.`Time2`, interval (1) year), '%Y-%m-%d %H:%i:%s.%f') = now()))
g.mysql.Insert(new Topic()).ExecuteAffrows(); g.mysql.Insert(new Topic()).ExecuteAffrows();
foreach (var dt in new[] { DateTime.Parse("2020-5-6 0:1:2"), DateTime.Parse("2020-11-16 13:21:22"), }) var dtn = DateTime.Parse("2020-1-1 0:0:0");
var dts = Enumerable.Range(1, 12).Select(a => dtn.AddMonths(a))
.Concat(Enumerable.Range(1, 31).Select(a => dtn.AddDays(a)))
.Concat(Enumerable.Range(1, 24).Select(a => dtn.AddHours(a)))
.Concat(Enumerable.Range(1, 60).Select(a => dtn.AddMinutes(a)))
.Concat(Enumerable.Range(1, 60).Select(a => dtn.AddSeconds(a)));
foreach (var dt in dts)
{ {
Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss.ffffff"), select.First(a => dt.ToString())); Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss.ffffff"), select.First(a => dt.ToString()));
Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss"), select.First(a => dt.ToString("yyyy-MM-dd HH:mm:ss"))); Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss"), select.First(a => dt.ToString("yyyy-MM-dd HH:mm:ss")));

View File

@ -51,7 +51,13 @@ namespace FreeSql.Tests.Odbc.SqlServerExpression
data.Add(select.Where(a => a.Type.Parent.Time2.AddYears(1).ToString().Equals(DateTime.Now)).ToList()); data.Add(select.Where(a => a.Type.Parent.Time2.AddYears(1).ToString().Equals(DateTime.Now)).ToList());
g.sqlserver.Insert(new Topic()).ExecuteAffrows(); g.sqlserver.Insert(new Topic()).ExecuteAffrows();
foreach (var dt in new[] { DateTime.Parse("2020-5-6 0:1:2"), DateTime.Parse("2020-11-16 13:21:22"), }) var dtn = DateTime.Parse("2020-1-1 0:0:0");
var dts = Enumerable.Range(1, 12).Select(a => dtn.AddMonths(a))
.Concat(Enumerable.Range(1, 31).Select(a => dtn.AddDays(a)))
.Concat(Enumerable.Range(1, 24).Select(a => dtn.AddHours(a)))
.Concat(Enumerable.Range(1, 60).Select(a => dtn.AddMinutes(a)))
.Concat(Enumerable.Range(1, 60).Select(a => dtn.AddSeconds(a)));
foreach (var dt in dts)
{ {
Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss.fff"), select.First(a => dt.ToString())); Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss.fff"), select.First(a => dt.ToString()));
Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss"), select.First(a => dt.ToString("yyyy-MM-dd HH:mm:ss"))); Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss"), select.First(a => dt.ToString("yyyy-MM-dd HH:mm:ss")));
@ -59,6 +65,9 @@ namespace FreeSql.Tests.Odbc.SqlServerExpression
Assert.Equal(dt.ToString("yyyy-MM-dd HH"), select.First(a => dt.ToString("yyyy-MM-dd HH"))); Assert.Equal(dt.ToString("yyyy-MM-dd HH"), select.First(a => dt.ToString("yyyy-MM-dd HH")));
Assert.Equal(dt.ToString("yyyy-MM-dd"), select.First(a => dt.ToString("yyyy-MM-dd"))); Assert.Equal(dt.ToString("yyyy-MM-dd"), select.First(a => dt.ToString("yyyy-MM-dd")));
Assert.Equal(dt.ToString("yyyy-MM"), select.First(a => dt.ToString("yyyy-MM"))); Assert.Equal(dt.ToString("yyyy-MM"), select.First(a => dt.ToString("yyyy-MM")));
Assert.Equal(dt.ToString("yyyyMMddHHmmss"), select.First(a => dt.ToString("yyyyMMddHHmmss")));
Assert.Equal(dt.ToString("yyyyMMddHHmm"), select.First(a => dt.ToString("yyyyMMddHHmm")));
Assert.Equal(dt.ToString("yyyyMMddHH"), select.First(a => dt.ToString("yyyyMMddHH")));
Assert.Equal(dt.ToString("yyyyMMdd"), select.First(a => dt.ToString("yyyyMMdd"))); Assert.Equal(dt.ToString("yyyyMMdd"), select.First(a => dt.ToString("yyyyMMdd")));
Assert.Equal(dt.ToString("yyyyMM"), select.First(a => dt.ToString("yyyyMM"))); Assert.Equal(dt.ToString("yyyyMM"), select.First(a => dt.ToString("yyyyMM")));
Assert.Equal(dt.ToString("yyyy"), select.First(a => dt.ToString("yyyy"))); Assert.Equal(dt.ToString("yyyy"), select.First(a => dt.ToString("yyyy")));

View File

@ -62,7 +62,13 @@ namespace FreeSql.Tests.MySqlExpression
//WHERE ((date_format(date_add(a__Type__Parent.`Time2`, interval (1) year), '%Y-%m-%d %H:%i:%s.%f') = now())) //WHERE ((date_format(date_add(a__Type__Parent.`Time2`, interval (1) year), '%Y-%m-%d %H:%i:%s.%f') = now()))
g.mysql.Insert(new Topic()).ExecuteAffrows(); g.mysql.Insert(new Topic()).ExecuteAffrows();
foreach (var dt in new[] { DateTime.Parse("2020-5-6 0:1:2"), DateTime.Parse("2020-11-16 13:21:22"), }) var dtn = DateTime.Parse("2020-1-1 0:0:0");
var dts = Enumerable.Range(1, 12).Select(a => dtn.AddMonths(a))
.Concat(Enumerable.Range(1, 31).Select(a => dtn.AddDays(a)))
.Concat(Enumerable.Range(1, 24).Select(a => dtn.AddHours(a)))
.Concat(Enumerable.Range(1, 60).Select(a => dtn.AddMinutes(a)))
.Concat(Enumerable.Range(1, 60).Select(a => dtn.AddSeconds(a)));
foreach (var dt in dts)
{ {
Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss.ffffff"), select.First(a => dt.ToString())); Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss.ffffff"), select.First(a => dt.ToString()));
Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss"), select.First(a => dt.ToString("yyyy-MM-dd HH:mm:ss"))); Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss"), select.First(a => dt.ToString("yyyy-MM-dd HH:mm:ss")));

View File

@ -59,7 +59,13 @@ namespace FreeSql.Tests.SqlServerExpression
data.Add(select.Where(a => a.Type.Parent.Time2.AddYears(1).ToString().Equals(DateTime.Now)).ToList()); data.Add(select.Where(a => a.Type.Parent.Time2.AddYears(1).ToString().Equals(DateTime.Now)).ToList());
g.sqlserver.Insert(new Topic()).ExecuteAffrows(); g.sqlserver.Insert(new Topic()).ExecuteAffrows();
foreach (var dt in new[] { DateTime.Parse("2020-5-6 0:1:2"), DateTime.Parse("2020-11-16 13:21:22"), }) var dtn = DateTime.Parse("2020-1-1 0:0:0");
var dts = Enumerable.Range(1, 12).Select(a => dtn.AddMonths(a))
.Concat(Enumerable.Range(1, 31).Select(a => dtn.AddDays(a)))
.Concat(Enumerable.Range(1, 24).Select(a => dtn.AddHours(a)))
.Concat(Enumerable.Range(1, 60).Select(a => dtn.AddMinutes(a)))
.Concat(Enumerable.Range(1, 60).Select(a => dtn.AddSeconds(a)));
foreach (var dt in dts)
{ {
Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss.fff"), select.First(a => dt.ToString())); Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss.fff"), select.First(a => dt.ToString()));
Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss"), select.First(a => dt.ToString("yyyy-MM-dd HH:mm:ss"))); Assert.Equal(dt.ToString("yyyy-MM-dd HH:mm:ss"), select.First(a => dt.ToString("yyyy-MM-dd HH:mm:ss")));
@ -67,6 +73,9 @@ namespace FreeSql.Tests.SqlServerExpression
Assert.Equal(dt.ToString("yyyy-MM-dd HH"), select.First(a => dt.ToString("yyyy-MM-dd HH"))); Assert.Equal(dt.ToString("yyyy-MM-dd HH"), select.First(a => dt.ToString("yyyy-MM-dd HH")));
Assert.Equal(dt.ToString("yyyy-MM-dd"), select.First(a => dt.ToString("yyyy-MM-dd"))); Assert.Equal(dt.ToString("yyyy-MM-dd"), select.First(a => dt.ToString("yyyy-MM-dd")));
Assert.Equal(dt.ToString("yyyy-MM"), select.First(a => dt.ToString("yyyy-MM"))); Assert.Equal(dt.ToString("yyyy-MM"), select.First(a => dt.ToString("yyyy-MM")));
Assert.Equal(dt.ToString("yyyyMMddHHmmss"), select.First(a => dt.ToString("yyyyMMddHHmmss")));
Assert.Equal(dt.ToString("yyyyMMddHHmm"), select.First(a => dt.ToString("yyyyMMddHHmm")));
Assert.Equal(dt.ToString("yyyyMMddHH"), select.First(a => dt.ToString("yyyyMMddHH")));
Assert.Equal(dt.ToString("yyyyMMdd"), select.First(a => dt.ToString("yyyyMMdd"))); Assert.Equal(dt.ToString("yyyyMMdd"), select.First(a => dt.ToString("yyyyMMdd")));
Assert.Equal(dt.ToString("yyyyMM"), select.First(a => dt.ToString("yyyyMM"))); Assert.Equal(dt.ToString("yyyyMM"), select.First(a => dt.ToString("yyyyMM")));
Assert.Equal(dt.ToString("yyyy"), select.First(a => dt.ToString("yyyy"))); Assert.Equal(dt.ToString("yyyy"), select.First(a => dt.ToString("yyyy")));

View File

@ -394,21 +394,21 @@ namespace FreeSql.MySql
case "Equals": return $"({left} = {args1})"; case "Equals": return $"({left} = {args1})";
case "CompareTo": return $"timestampdiff(microsecond,{args1},{left})"; case "CompareTo": return $"timestampdiff(microsecond,{args1},{left})";
case "ToString": case "ToString":
if (exp.Arguments.Count == 0) return $"date_format({left}, '%Y-%m-%d %H:%i:%s.%f')"; if (exp.Arguments.Count == 0) return $"date_format({left},'%Y-%m-%d %H:%i:%s.%f')";
switch (args1) switch (args1)
{ {
case "'yyyy-MM-dd HH:mm:ss'": return $"date_format({left}, '%Y-%m-%d %H:%i:%s')"; case "'yyyy-MM-dd HH:mm:ss'": return $"date_format({left},'%Y-%m-%d %H:%i:%s')";
case "'yyyy-MM-dd HH:mm'": return $"date_format({left}, '%Y-%m-%d %H:%i')"; case "'yyyy-MM-dd HH:mm'": return $"date_format({left},'%Y-%m-%d %H:%i')";
case "'yyyy-MM-dd HH'": return $"date_format({left}, '%Y-%m-%d %H')"; case "'yyyy-MM-dd HH'": return $"date_format({left},'%Y-%m-%d %H')";
case "'yyyy-MM-dd'": return $"date_format({left}, '%Y-%m-%d')"; case "'yyyy-MM-dd'": return $"date_format({left},'%Y-%m-%d')";
case "'yyyy-MM'": return $"date_format({left}, '%Y-%m')"; case "'yyyy-MM'": return $"date_format({left},'%Y-%m')";
case "'yyyyMMddHHmmss'": return $"date_format({left}, '%Y%m%d%H%i%s')"; case "'yyyyMMddHHmmss'": return $"date_format({left},'%Y%m%d%H%i%s')";
case "'yyyyMMddHHmm'": return $"date_format({left}, '%Y%m%d%H%i')"; case "'yyyyMMddHHmm'": return $"date_format({left},'%Y%m%d%H%i')";
case "'yyyyMMddHH'": return $"date_format({left}, '%Y%m%d%H')"; case "'yyyyMMddHH'": return $"date_format({left},'%Y%m%d%H')";
case "'yyyyMMdd'": return $"date_format({left}, '%Y%m%d')"; case "'yyyyMMdd'": return $"date_format({left},'%Y%m%d')";
case "'yyyyMM'": return $"date_format({left}, '%Y%m')"; case "'yyyyMM'": return $"date_format({left},'%Y%m')";
case "'yyyy'": return $"date_format({left}, '%Y')"; case "'yyyy'": return $"date_format({left},'%Y')";
case "'HH:mm:ss'": return $"date_format({left}, '%H:%i:%s')"; case "'HH:mm:ss'": return $"date_format({left},'%H:%i:%s')";
} }
args1 = Regex.Replace(args1, "(yyyy|yy|MM|M|dd|d|HH|H|hh|h|mm|ss|tt)", m => args1 = Regex.Replace(args1, "(yyyy|yy|MM|M|dd|d|HH|H|hh|h|mm|ss|tt)", m =>
@ -437,13 +437,13 @@ namespace FreeSql.MySql
isMatched = true; isMatched = true;
switch (m.Groups[1].Value) switch (m.Groups[1].Value)
{ {
case "m": return $"'), trim(leading '0' from date_format({left}, '%i')), date_format({left}, '"; case "m": return $"'), case when substr(date_format({left},'%i'),1,1) = '0' then substr(date_format({left},'%i'),2,1) else date_format({left},'%i') end, date_format({left},'";
case "s": return $"'), trim(leading '0' from date_format({left}, '%s')), date_format({left}, '"; case "s": return $"'), case when substr(date_format({left},'%s'),1,1) = '0' then substr(date_format({left},'%s'),2,1) else date_format({left},'%s') end, date_format({left},'";
case "t": return $"'), trim(trailing 'M' from date_format({left}, '%p')), date_format({left}, '"; case "t": return $"'), trim(trailing 'M' from date_format({left},'%p')), date_format({left},'";
} }
return m.Groups[0].Value; return m.Groups[0].Value;
}).Replace("%_a1", "%m").Replace("%_a2", "%s"); }).Replace("%_a1", "%m").Replace("%_a2", "%s");
return isMatched == false ? $"date_format({left}, {args1})" : $"concat(date_format({left}, {args1}))".Replace($"date_format({left}, '')", "''"); return isMatched == false ? $"date_format({left},{args1})" : $"concat(date_format({left},{args1}))".Replace($"date_format({left},'')", "''");
} }
} }
return null; return null;

View File

@ -394,21 +394,21 @@ namespace FreeSql.Odbc.MySql
case "Equals": return $"({left} = {args1})"; case "Equals": return $"({left} = {args1})";
case "CompareTo": return $"timestampdiff(microsecond,{args1},{left})"; case "CompareTo": return $"timestampdiff(microsecond,{args1},{left})";
case "ToString": case "ToString":
if (exp.Arguments.Count == 0) return $"date_format({left}, '%Y-%m-%d %H:%i:%s.%f')"; if (exp.Arguments.Count == 0) return $"date_format({left},'%Y-%m-%d %H:%i:%s.%f')";
switch (args1) switch (args1)
{ {
case "'yyyy-MM-dd HH:mm:ss'": return $"date_format({left}, '%Y-%m-%d %H:%i:%s')"; case "'yyyy-MM-dd HH:mm:ss'": return $"date_format({left},'%Y-%m-%d %H:%i:%s')";
case "'yyyy-MM-dd HH:mm'": return $"date_format({left}, '%Y-%m-%d %H:%i')"; case "'yyyy-MM-dd HH:mm'": return $"date_format({left},'%Y-%m-%d %H:%i')";
case "'yyyy-MM-dd HH'": return $"date_format({left}, '%Y-%m-%d %H')"; case "'yyyy-MM-dd HH'": return $"date_format({left},'%Y-%m-%d %H')";
case "'yyyy-MM-dd'": return $"date_format({left}, '%Y-%m-%d')"; case "'yyyy-MM-dd'": return $"date_format({left},'%Y-%m-%d')";
case "'yyyy-MM'": return $"date_format({left}, '%Y-%m')"; case "'yyyy-MM'": return $"date_format({left},'%Y-%m')";
case "'yyyyMMddHHmmss'": return $"date_format({left}, '%Y%m%d%H%i%s')"; case "'yyyyMMddHHmmss'": return $"date_format({left},'%Y%m%d%H%i%s')";
case "'yyyyMMddHHmm'": return $"date_format({left}, '%Y%m%d%H%i')"; case "'yyyyMMddHHmm'": return $"date_format({left},'%Y%m%d%H%i')";
case "'yyyyMMddHH'": return $"date_format({left}, '%Y%m%d%H')"; case "'yyyyMMddHH'": return $"date_format({left},'%Y%m%d%H')";
case "'yyyyMMdd'": return $"date_format({left}, '%Y%m%d')"; case "'yyyyMMdd'": return $"date_format({left},'%Y%m%d')";
case "'yyyyMM'": return $"date_format({left}, '%Y%m')"; case "'yyyyMM'": return $"date_format({left},'%Y%m')";
case "'yyyy'": return $"date_format({left}, '%Y')"; case "'yyyy'": return $"date_format({left},'%Y')";
case "'HH:mm:ss'": return $"date_format({left}, '%H:%i:%s')"; case "'HH:mm:ss'": return $"date_format({left},'%H:%i:%s')";
} }
args1 = Regex.Replace(args1, "(yyyy|yy|MM|M|dd|d|HH|H|hh|h|mm|ss|tt)", m => args1 = Regex.Replace(args1, "(yyyy|yy|MM|M|dd|d|HH|H|hh|h|mm|ss|tt)", m =>
@ -437,13 +437,13 @@ namespace FreeSql.Odbc.MySql
isMatched = true; isMatched = true;
switch (m.Groups[1].Value) switch (m.Groups[1].Value)
{ {
case "m": return $"'), trim(leading '0' from date_format({left}, '%i')), date_format({left}, '"; case "m": return $"'), case when substr(date_format({left},'%i'),1,1) = '0' then substr(date_format({left},'%i'),2,1) else date_format({left},'%i') end, date_format({left},'";
case "s": return $"'), trim(leading '0' from date_format({left}, '%s')), date_format({left}, '"; case "s": return $"'), case when substr(date_format({left},'%s'),1,1) = '0' then substr(date_format({left},'%s'),2,1) else date_format({left},'%s') end, date_format({left},'";
case "t": return $"'), trim(trailing 'M' from date_format({left}, '%p')), date_format({left}, '"; case "t": return $"'), trim(trailing 'M' from date_format({left},'%p')), date_format({left},'";
} }
return m.Groups[0].Value; return m.Groups[0].Value;
}).Replace("%_a1", "%m").Replace("%_a2", "%s"); }).Replace("%_a1", "%m").Replace("%_a2", "%s");
return isMatched == false ? $"date_format({left}, {args1})" : $"concat(date_format({left}, {args1}))".Replace($"date_format({left}, '')", "''"); return isMatched == false ? $"date_format({left},{args1})" : $"concat(date_format({left},{args1}))".Replace($"date_format({left},'')", "''");
} }
} }
return null; return null;

View File

@ -388,9 +388,11 @@ namespace FreeSql.Odbc.SqlServer
case "'yyyy'": return $"substring(convert(char(8), {left}, 112), 1, 4)"; case "'yyyy'": return $"substring(convert(char(8), {left}, 112), 1, 4)";
case "'HH:mm:ss'": return $"convert(char(8), {left}, 24)"; case "'HH:mm:ss'": return $"convert(char(8), {left}, 24)";
} }
var isMatched = false;
var nchar = args1.StartsWith("N'") ? "N" : ""; var nchar = args1.StartsWith("N'") ? "N" : "";
return Regex.Replace(args1, "(yyyy|yy|MM|M|dd|d|HH|H|hh|h|mm|m|ss|s|tt|t)", m => args1 = Regex.Replace(args1, "(yyyy|yy|MM|M|dd|d|HH|H|hh|h|mm|m|ss|s|tt|t)", m =>
{ {
isMatched = true;
switch (m.Groups[1].Value) switch (m.Groups[1].Value)
{ {
case "yyyy": return $"' + substring(convert(char(8), {left}, 112), 1, 4) + {nchar}'"; case "yyyy": return $"' + substring(convert(char(8), {left}, 112), 1, 4) + {nchar}'";
@ -416,6 +418,7 @@ namespace FreeSql.Odbc.SqlServer
} }
return m.Groups[0].Value; return m.Groups[0].Value;
}); });
return isMatched == false ? args1 : $"({args1})";
} }
} }
return null; return null;

View File

@ -388,9 +388,11 @@ namespace FreeSql.SqlServer
case "'yyyy'": return $"substring(convert(char(8), {left}, 112), 1, 4)"; case "'yyyy'": return $"substring(convert(char(8), {left}, 112), 1, 4)";
case "'HH:mm:ss'": return $"convert(char(8), {left}, 24)"; case "'HH:mm:ss'": return $"convert(char(8), {left}, 24)";
} }
var isMatched = false;
var nchar = args1.StartsWith("N'") ? "N" : ""; var nchar = args1.StartsWith("N'") ? "N" : "";
return Regex.Replace(args1, "(yyyy|yy|MM|M|dd|d|HH|H|hh|h|mm|m|ss|s|tt|t)", m => args1 = Regex.Replace(args1, "(yyyy|yy|MM|M|dd|d|HH|H|hh|h|mm|m|ss|s|tt|t)", m =>
{ {
isMatched = true;
switch (m.Groups[1].Value) switch (m.Groups[1].Value)
{ {
case "yyyy": return $"' + substring(convert(char(8), {left}, 112), 1, 4) + {nchar}'"; case "yyyy": return $"' + substring(convert(char(8), {left}, 112), 1, 4) + {nchar}'";
@ -414,6 +416,7 @@ namespace FreeSql.SqlServer
} }
return m.Groups[0].Value; return m.Groups[0].Value;
}); });
return isMatched == false ? args1 : $"({args1})";
} }
} }
return null; return null;