mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 01:05:27 +08:00 
			
		
		
		
	测试
This commit is contained in:
		@@ -722,13 +722,5 @@
 | 
				
			|||||||
            <param name="that"></param>
 | 
					            <param name="that"></param>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Reflection.Assembly[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            批量注入 Repository,可以参考代码自行调整
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="services"></param>
 | 
					 | 
				
			||||||
            <param name="assemblies"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
    </members>
 | 
					    </members>
 | 
				
			||||||
</doc>
 | 
					</doc>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.Custom.MySqlExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.mysql.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.Custom.OracleExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.oracle.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.Custom.PostgreSQLExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.pgsql.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            //data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,210 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.Custom.SqlServerExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    [Collection("SqlServerCollection")]
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.sqlserver.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.GBaseExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.gbase.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.MySqlConnectorExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.mysql.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,209 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.Odbc.DefaultExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.odbc.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.Odbc.MySqlExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.mysql.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.Odbc.OracleExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.oracle.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.Odbc.PostgreSQLExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.pgsql.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            //data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,210 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.Odbc.SqlServerExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    [Collection("SqlServerCollection")]
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.sqlserver.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.OracleOledbExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.oracle.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.SqliteExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.sqlite.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.DamengExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.dameng.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.FirebirdExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.firebird.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -18,8 +18,9 @@
 | 
				
			|||||||
		<PackageReference Include="IdleBus" Version="1.5.3" />
 | 
							<PackageReference Include="IdleBus" Version="1.5.3" />
 | 
				
			||||||
		<PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.0" />
 | 
							<PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.0" />
 | 
				
			||||||
		<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.0" />
 | 
							<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.0" />
 | 
				
			||||||
		<PackageReference Include="Microsoft.Data.SqlClient" Version="5.1.1" />
 | 
							<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.1" />
 | 
				
			||||||
		<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
 | 
							<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
 | 
				
			||||||
 | 
							<PackageReference Include="Npgsql" Version="6.0.11" />
 | 
				
			||||||
		<PackageReference Include="System.Linq.Dynamic.Core" Version="1.3.5" />
 | 
							<PackageReference Include="System.Linq.Dynamic.Core" Version="1.3.5" />
 | 
				
			||||||
		<PackageReference Include="xunit" Version="2.4.1" />
 | 
							<PackageReference Include="xunit" Version="2.4.1" />
 | 
				
			||||||
		<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
 | 
							<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.KingbaseESExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.kingbaseES.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.MsAccessExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.msaccess.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.MySqlExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.mysql.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.OracleExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.oracle.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -18,6 +18,81 @@ namespace FreeSql.Tests.PostgreSQL
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    public class PostgreSQLCodeFirstTest
 | 
					    public class PostgreSQLCodeFirstTest
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void DateOnlyTimeOnly()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var fsql = g.pgsql;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var item = new test_DateOnlyTimeOnly01 { };
 | 
				
			||||||
 | 
					            item.Id = (int)fsql.Insert(item).ExecuteIdentity();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var newitem = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item.Id).ToOne();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var item2 = new test_DateOnlyTimeOnly01
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                testFieldDateTime = DateTime.Now,
 | 
				
			||||||
 | 
					                testFieldDateTimeArray = new[] { DateTime.Now, DateTime.Now.AddHours(2) },
 | 
				
			||||||
 | 
					                testFieldDateTimeArrayNullable = new DateTime?[] { DateTime.Now, null, DateTime.Now.AddHours(2) },
 | 
				
			||||||
 | 
					                testFieldDateTimeNullable = DateTime.Now.AddDays(-1),
 | 
				
			||||||
 | 
					                testFieldDateOnly = DateOnly.FromDateTime(DateTime.Now),
 | 
				
			||||||
 | 
					                testFieldDateOnlyArray = new[] { DateOnly.FromDateTime(DateTime.Now), DateOnly.FromDateTime(DateTime.Now.AddHours(2)) },
 | 
				
			||||||
 | 
					                testFieldDateOnlyArrayNullable = new DateOnly?[] { DateOnly.FromDateTime(DateTime.Now), null, DateOnly.FromDateTime(DateTime.Now.AddHours(2)) },
 | 
				
			||||||
 | 
					                testFieldDateOnlyNullable = DateOnly.FromDateTime(DateTime.Now.AddDays(-1)),
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                testFieldTimeSpan = TimeSpan.FromDays(1),
 | 
				
			||||||
 | 
					                testFieldTimeSpanArray = new[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(60) },
 | 
				
			||||||
 | 
					                testFieldTimeSpanArrayNullable = new TimeSpan?[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), null, TimeSpan.FromSeconds(60) },
 | 
				
			||||||
 | 
					                testFieldTimeSpanNullable = TimeSpan.FromSeconds(90),
 | 
				
			||||||
 | 
					                testFieldTimeOnly = TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)),
 | 
				
			||||||
 | 
					                testFieldTimeOnlyArray = new[] { TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)), TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(10)), TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(60)) },
 | 
				
			||||||
 | 
					                testFieldTimeOnlyArrayNullable = new TimeOnly?[] { TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)), TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(10)), null, TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(60)) },
 | 
				
			||||||
 | 
					                testFieldTimeOnlyNullable = TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(90)),
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var sqlPar = fsql.Insert(item2).ToSql();
 | 
				
			||||||
 | 
					            var sqlText = fsql.Insert(item2).NoneParameter().ToSql();
 | 
				
			||||||
 | 
					            var item3NP = fsql.Insert(item2).NoneParameter().ExecuteInserted();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var item3 = fsql.Insert(item2).ExecuteInserted().First();
 | 
				
			||||||
 | 
					            var newitem2 = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item3.Id).ToOne();
 | 
				
			||||||
 | 
					            Assert.True(item2.testFieldDateTime.Subtract( newitem2.testFieldDateTime).TotalSeconds <= 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item3 = fsql.Insert(item2).NoneParameter().ExecuteInserted().First();
 | 
				
			||||||
 | 
					            newitem2 = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item3.Id).ToOne();
 | 
				
			||||||
 | 
					            Assert.True(item3.testFieldDateTime.Subtract(newitem2.testFieldDateTime).TotalSeconds <= 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var items = fsql.Select<test_DateOnlyTimeOnly01>().ToList();
 | 
				
			||||||
 | 
					            var itemstb = fsql.Select<test_DateOnlyTimeOnly01>().ToDataTable();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        class test_DateOnlyTimeOnly01
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            [Column(IsIdentity = true, IsPrimary = true)]
 | 
				
			||||||
 | 
					            public int Id { get; set; }
 | 
				
			||||||
 | 
					            public TimeSpan testFieldTimeSpan { get; set; }
 | 
				
			||||||
 | 
					            public TimeOnly testFieldTimeOnly { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            [Column(ServerTime = DateTimeKind.Local)]
 | 
				
			||||||
 | 
					            public DateTime testFieldDateTime { get; set; }
 | 
				
			||||||
 | 
					            public DateOnly testFieldDateOnly { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            public TimeSpan? testFieldTimeSpanNullable { get; set; }
 | 
				
			||||||
 | 
					            public TimeOnly? testFieldTimeOnlyNullable { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            [Column(ServerTime = DateTimeKind.Local)]
 | 
				
			||||||
 | 
					            public DateTime? testFieldDateTimeNullable { get; set; }
 | 
				
			||||||
 | 
					            public DateOnly? testFieldDateOnlyNullable { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            /* array */
 | 
				
			||||||
 | 
					            public TimeSpan[] testFieldTimeSpanArray { get; set; }
 | 
				
			||||||
 | 
					            public TimeOnly[] testFieldTimeOnlyArray { get; set; }
 | 
				
			||||||
 | 
					            public DateTime[] testFieldDateTimeArray { get; set; }
 | 
				
			||||||
 | 
					            public DateOnly[] testFieldDateOnlyArray { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            public TimeSpan?[] testFieldTimeSpanArrayNullable { get; set; }
 | 
				
			||||||
 | 
					            public TimeOnly?[] testFieldTimeOnlyArrayNullable { get; set; }
 | 
				
			||||||
 | 
					            public DateTime?[] testFieldDateTimeArrayNullable { get; set; }
 | 
				
			||||||
 | 
					            public DateOnly?[] testFieldDateOnlyArrayNullable { get; set; }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Test_0String()
 | 
					        public void Test_0String()
 | 
				
			||||||
@@ -310,6 +385,10 @@ namespace FreeSql.Tests.PostgreSQL
 | 
				
			|||||||
                testFieldDateTimeArray = new[] { DateTime.Now, DateTime.Now.AddHours(2) },
 | 
					                testFieldDateTimeArray = new[] { DateTime.Now, DateTime.Now.AddHours(2) },
 | 
				
			||||||
                testFieldDateTimeArrayNullable = new DateTime?[] { DateTime.Now, null, DateTime.Now.AddHours(2) },
 | 
					                testFieldDateTimeArrayNullable = new DateTime?[] { DateTime.Now, null, DateTime.Now.AddHours(2) },
 | 
				
			||||||
                testFieldDateTimeNullable = DateTime.Now.AddDays(-1),
 | 
					                testFieldDateTimeNullable = DateTime.Now.AddDays(-1),
 | 
				
			||||||
 | 
					                testFieldDateOnly = DateOnly.FromDateTime(DateTime.Now),
 | 
				
			||||||
 | 
					                testFieldDateOnlyArray = new[] { DateOnly.FromDateTime(DateTime.Now), DateOnly.FromDateTime(DateTime.Now.AddHours(2)) },
 | 
				
			||||||
 | 
					                testFieldDateOnlyArrayNullable = new DateOnly?[] { DateOnly.FromDateTime(DateTime.Now), null, DateOnly.FromDateTime(DateTime.Now.AddHours(2)) },
 | 
				
			||||||
 | 
					                testFieldDateOnlyNullable = DateOnly.FromDateTime(DateTime.Now.AddDays(-1)),
 | 
				
			||||||
                testFieldDecimal = 999.99M,
 | 
					                testFieldDecimal = 999.99M,
 | 
				
			||||||
                testFieldDecimalArray = new[] { 999.91M, 999.92M, 999.93M },
 | 
					                testFieldDecimalArray = new[] { 999.91M, 999.92M, 999.93M },
 | 
				
			||||||
                testFieldDecimalArrayNullable = new decimal?[] { 998.11M, 998.12M, 998.13M },
 | 
					                testFieldDecimalArrayNullable = new decimal?[] { 998.11M, 998.12M, 998.13M },
 | 
				
			||||||
@@ -483,6 +562,10 @@ namespace FreeSql.Tests.PostgreSQL
 | 
				
			|||||||
                testFieldTimeSpanArray = new[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(60) },
 | 
					                testFieldTimeSpanArray = new[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(60) },
 | 
				
			||||||
                testFieldTimeSpanArrayNullable = new TimeSpan?[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), null, TimeSpan.FromSeconds(60) },
 | 
					                testFieldTimeSpanArrayNullable = new TimeSpan?[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), null, TimeSpan.FromSeconds(60) },
 | 
				
			||||||
                testFieldTimeSpanNullable = TimeSpan.FromSeconds(90),
 | 
					                testFieldTimeSpanNullable = TimeSpan.FromSeconds(90),
 | 
				
			||||||
 | 
					                testFieldTimeOnly = TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)),
 | 
				
			||||||
 | 
					                testFieldTimeOnlyArray = new[] { TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)), TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(10)), TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(60)) },
 | 
				
			||||||
 | 
					                testFieldTimeOnlyArrayNullable = new TimeOnly?[] { TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)), TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(10)), null, TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(60)) },
 | 
				
			||||||
 | 
					                testFieldTimeOnlyNullable = TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(90)),
 | 
				
			||||||
                testFieldTsrange = new NpgsqlRange<DateTime>(DateTime.Now, DateTime.Now.AddMonths(1)),
 | 
					                testFieldTsrange = new NpgsqlRange<DateTime>(DateTime.Now, DateTime.Now.AddMonths(1)),
 | 
				
			||||||
                testFieldTsrangeArray = new[] { new NpgsqlRange<DateTime>(DateTime.Now, DateTime.Now.AddMonths(1)), new NpgsqlRange<DateTime>(DateTime.Now, DateTime.Now.AddMonths(2)) },
 | 
					                testFieldTsrangeArray = new[] { new NpgsqlRange<DateTime>(DateTime.Now, DateTime.Now.AddMonths(1)), new NpgsqlRange<DateTime>(DateTime.Now, DateTime.Now.AddMonths(2)) },
 | 
				
			||||||
                testFieldTsrangeArrayNullable = new NpgsqlRange<DateTime>?[] { new NpgsqlRange<DateTime>(DateTime.Now, DateTime.Now.AddMonths(1)), null, new NpgsqlRange<DateTime>(DateTime.Now, DateTime.Now.AddMonths(2)) },
 | 
					                testFieldTsrangeArrayNullable = new NpgsqlRange<DateTime>?[] { new NpgsqlRange<DateTime>(DateTime.Now, DateTime.Now.AddMonths(1)), null, new NpgsqlRange<DateTime>(DateTime.Now, DateTime.Now.AddMonths(2)) },
 | 
				
			||||||
@@ -540,9 +623,11 @@ namespace FreeSql.Tests.PostgreSQL
 | 
				
			|||||||
            public float testFieldFloat { get; set; }
 | 
					            public float testFieldFloat { get; set; }
 | 
				
			||||||
            public decimal testFieldDecimal { get; set; }
 | 
					            public decimal testFieldDecimal { get; set; }
 | 
				
			||||||
            public TimeSpan testFieldTimeSpan { get; set; }
 | 
					            public TimeSpan testFieldTimeSpan { get; set; }
 | 
				
			||||||
 | 
					            public TimeOnly testFieldTimeOnly { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            [Column(ServerTime = DateTimeKind.Local)]
 | 
					            [Column(ServerTime = DateTimeKind.Local)]
 | 
				
			||||||
            public DateTime testFieldDateTime { get; set; }
 | 
					            public DateTime testFieldDateTime { get; set; }
 | 
				
			||||||
 | 
					            public DateOnly testFieldDateOnly { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public byte[] testFieldBytes { get; set; }
 | 
					            public byte[] testFieldBytes { get; set; }
 | 
				
			||||||
            public string testFieldString { get; set; }
 | 
					            public string testFieldString { get; set; }
 | 
				
			||||||
@@ -574,9 +659,11 @@ namespace FreeSql.Tests.PostgreSQL
 | 
				
			|||||||
            public float? testFieldFloatNullable { get; set; }
 | 
					            public float? testFieldFloatNullable { get; set; }
 | 
				
			||||||
            public decimal? testFieldDecimalNullable { get; set; }
 | 
					            public decimal? testFieldDecimalNullable { get; set; }
 | 
				
			||||||
            public TimeSpan? testFieldTimeSpanNullable { get; set; }
 | 
					            public TimeSpan? testFieldTimeSpanNullable { get; set; }
 | 
				
			||||||
 | 
					            public TimeOnly? testFieldTimeOnlyNullable { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            [Column(ServerTime = DateTimeKind.Local)]
 | 
					            [Column(ServerTime = DateTimeKind.Local)]
 | 
				
			||||||
            public DateTime? testFieldDateTimeNullable { get; set; }
 | 
					            public DateTime? testFieldDateTimeNullable { get; set; }
 | 
				
			||||||
 | 
					            public DateOnly? testFieldDateOnlyNullable { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public Guid? testFieldGuidNullable { get; set; }
 | 
					            public Guid? testFieldGuidNullable { get; set; }
 | 
				
			||||||
            public NpgsqlPoint? testFieldNpgsqlPointNullable { get; set; }
 | 
					            public NpgsqlPoint? testFieldNpgsqlPointNullable { get; set; }
 | 
				
			||||||
@@ -627,7 +714,9 @@ namespace FreeSql.Tests.PostgreSQL
 | 
				
			|||||||
            public float[] testFieldFloatArray { get; set; }
 | 
					            public float[] testFieldFloatArray { get; set; }
 | 
				
			||||||
            public decimal[] testFieldDecimalArray { get; set; }
 | 
					            public decimal[] testFieldDecimalArray { get; set; }
 | 
				
			||||||
            public TimeSpan[] testFieldTimeSpanArray { get; set; }
 | 
					            public TimeSpan[] testFieldTimeSpanArray { get; set; }
 | 
				
			||||||
 | 
					            public TimeOnly[] testFieldTimeOnlyArray { get; set; }
 | 
				
			||||||
            public DateTime[] testFieldDateTimeArray { get; set; }
 | 
					            public DateTime[] testFieldDateTimeArray { get; set; }
 | 
				
			||||||
 | 
					            public DateOnly[] testFieldDateOnlyArray { get; set; }
 | 
				
			||||||
            public byte[][] testFieldBytesArray { get; set; }
 | 
					            public byte[][] testFieldBytesArray { get; set; }
 | 
				
			||||||
            public string[] testFieldStringArray { get; set; }
 | 
					            public string[] testFieldStringArray { get; set; }
 | 
				
			||||||
            public Guid[] testFieldGuidArray { get; set; }
 | 
					            public Guid[] testFieldGuidArray { get; set; }
 | 
				
			||||||
@@ -657,7 +746,9 @@ namespace FreeSql.Tests.PostgreSQL
 | 
				
			|||||||
            public float?[] testFieldFloatArrayNullable { get; set; }
 | 
					            public float?[] testFieldFloatArrayNullable { get; set; }
 | 
				
			||||||
            public decimal?[] testFieldDecimalArrayNullable { get; set; }
 | 
					            public decimal?[] testFieldDecimalArrayNullable { get; set; }
 | 
				
			||||||
            public TimeSpan?[] testFieldTimeSpanArrayNullable { get; set; }
 | 
					            public TimeSpan?[] testFieldTimeSpanArrayNullable { get; set; }
 | 
				
			||||||
 | 
					            public TimeOnly?[] testFieldTimeOnlyArrayNullable { get; set; }
 | 
				
			||||||
            public DateTime?[] testFieldDateTimeArrayNullable { get; set; }
 | 
					            public DateTime?[] testFieldDateTimeArrayNullable { get; set; }
 | 
				
			||||||
 | 
					            public DateOnly?[] testFieldDateOnlyArrayNullable { get; set; }
 | 
				
			||||||
            public Guid?[] testFieldGuidArrayNullable { get; set; }
 | 
					            public Guid?[] testFieldGuidArrayNullable { get; set; }
 | 
				
			||||||
            public NpgsqlPoint?[] testFieldNpgsqlPointArrayNullable { get; set; }
 | 
					            public NpgsqlPoint?[] testFieldNpgsqlPointArrayNullable { get; set; }
 | 
				
			||||||
            public NpgsqlLine?[] testFieldNpgsqlLineArrayNullable { get; set; }
 | 
					            public NpgsqlLine?[] testFieldNpgsqlLineArrayNullable { get; set; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.PostgreSQLExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.pgsql.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.ShenTongExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.shentong.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,218 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using FreeSql.Tests.DataContext.SqlServer;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.SqlServerExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    [Collection("SqlServerCollection")]
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        SqlServerFixture _sqlserverFixture;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public TimeSpanTest(SqlServerFixture sqlserverFixture)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            _sqlserverFixture = sqlserverFixture;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.sqlserver.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,293 +0,0 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using Xunit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace FreeSql.Tests.SqliteExpression
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public class TimeSpanTest
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ISelect<Topic> select => g.sqlite.Select<Topic>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Table(Name = "tb_topic")]
 | 
					 | 
				
			||||||
        class Topic
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            [Column(IsIdentity = true, IsPrimary = true)]
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public int Clicks { get; set; }
 | 
					 | 
				
			||||||
            public int TypeGuid { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeInfo Type { get; set; }
 | 
					 | 
				
			||||||
            public string Title { get; set; }
 | 
					 | 
				
			||||||
            public DateTime CreateTime { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Guid { get; set; }
 | 
					 | 
				
			||||||
            public int ParentId { get; set; }
 | 
					 | 
				
			||||||
            public TestTypeParentInfo Parent { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        class TestTypeParentInfo
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public int Id { get; set; }
 | 
					 | 
				
			||||||
            public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            public List<TestTypeInfo> Types { get; set; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Zero()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MinValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay > TimeSpan.MinValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) > -922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void MaxValue()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay < TimeSpan.MaxValue).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) < 922337203685477580)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Days()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Days == 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 86400000000) = 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Hours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Hours > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 3600000000) mod 24 > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Milliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Milliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000 mod 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Minutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Minutes > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 60000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Seconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Seconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) div 1000000 mod 60) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Ticks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Ticks > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) * 10) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalDays > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 86400000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalHours > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 3600000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMilliseconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalMinutes > 0).ToSql());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 60000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TotalSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.TotalSeconds > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) / 1000000) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Add()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Add(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) + (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void Subtract()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Subtract(TimeSpan.FromDays(1)) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) - (1 * 86400000000)) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void CompareTo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.CompareTo(TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.Equals(TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void this_ToString()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => a.CreateTime.TimeOfDay.ToString() == "ssss").ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') = 'ssss')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Compare()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Compare(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1)) > 0).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) - ((1 * 86400000000))) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Equals()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromDays()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromDays(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 86400000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromHours()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromHours(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 3600000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMilliseconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMilliseconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromMinutes()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromMinutes(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 60000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromSeconds()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromSeconds(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 * 1000000)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_FromTicks()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Equals(a.CreateTime.TimeOfDay, TimeSpan.FromTicks(1))).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE ((timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000) = (1 / 10)))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        [Fact]
 | 
					 | 
				
			||||||
        public void TimeSpan_Parse()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var data = new List<object>();
 | 
					 | 
				
			||||||
            data.Add(select.Where(a => TimeSpan.Parse(a.CreateTime.TimeOfDay.ToString()) > TimeSpan.Zero).ToList());
 | 
					 | 
				
			||||||
            //SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5 
 | 
					 | 
				
			||||||
            //FROM `tb_topic` a 
 | 
					 | 
				
			||||||
            //WHERE (cast(date_format(date_add(cast('0001/1/1 0:00:00' as datetime), interval (timestampdiff(microsecond, date_format(a.`CreateTime`, '1970-1-1 %H:%i:%s.%f'), a.`CreateTime`) + 62135596800000000)) microsecond), '%Y-%m-%d %H:%i:%s.%f') as signed) > 0)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +1,5 @@
 | 
				
			|||||||
using Npgsql;
 | 
					using Npgsql;
 | 
				
			||||||
 | 
					using Npgsql.Internal;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Diagnostics;
 | 
					using System.Diagnostics;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										33
									
								
								FreeSql.sln
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								FreeSql.sln
									
									
									
									
									
								
							@@ -127,6 +127,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FreeSql.Tests.Provider.Xugu
 | 
				
			|||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FreeSql.Extensions.ZeroEntity", "Extensions\FreeSql.Extensions.ZeroEntity\FreeSql.Extensions.ZeroEntity.csproj", "{D9419896-BFB0-47C1-BEFD-A6C48394643B}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FreeSql.Extensions.ZeroEntity", "Extensions\FreeSql.Extensions.ZeroEntity\FreeSql.Extensions.ZeroEntity.csproj", "{D9419896-BFB0-47C1-BEFD-A6C48394643B}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FreeSql.Provider.Duckdb", "Providers\FreeSql.Provider.Duckdb\FreeSql.Provider.Duckdb.csproj", "{4871434E-481D-4306-B6DD-73595C61A473}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FreeSql.Tests.Provider.Duckdb", "FreeSql.Tests\FreeSql.Tests.Provider.Duckdb\FreeSql.Tests.Provider.Duckdb.csproj", "{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
Global
 | 
					Global
 | 
				
			||||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
						GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
				
			||||||
		Debug|Any CPU = Debug|Any CPU
 | 
							Debug|Any CPU = Debug|Any CPU
 | 
				
			||||||
@@ -761,6 +765,30 @@ Global
 | 
				
			|||||||
		{D9419896-BFB0-47C1-BEFD-A6C48394643B}.Release|x64.Build.0 = Release|Any CPU
 | 
							{D9419896-BFB0-47C1-BEFD-A6C48394643B}.Release|x64.Build.0 = Release|Any CPU
 | 
				
			||||||
		{D9419896-BFB0-47C1-BEFD-A6C48394643B}.Release|x86.ActiveCfg = Release|Any CPU
 | 
							{D9419896-BFB0-47C1-BEFD-A6C48394643B}.Release|x86.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{D9419896-BFB0-47C1-BEFD-A6C48394643B}.Release|x86.Build.0 = Release|Any CPU
 | 
							{D9419896-BFB0-47C1-BEFD-A6C48394643B}.Release|x86.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Debug|x64.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Debug|x86.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Debug|x86.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Release|x64.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Release|x64.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Release|x86.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473}.Release|x86.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Debug|x64.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Debug|x86.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Debug|x86.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Release|x64.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Release|x64.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Release|x86.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{DE79C012-15B1-40EC-AD19-CBD7D489DB8E}.Release|x86.Build.0 = Release|Any CPU
 | 
				
			||||||
	EndGlobalSection
 | 
						EndGlobalSection
 | 
				
			||||||
	GlobalSection(SolutionProperties) = preSolution
 | 
						GlobalSection(SolutionProperties) = preSolution
 | 
				
			||||||
		HideSolutionNode = FALSE
 | 
							HideSolutionNode = FALSE
 | 
				
			||||||
@@ -802,10 +830,11 @@ Global
 | 
				
			|||||||
		{71A6F937-D11B-4AE4-9933-BB6B4D925665} = {4A92E8A6-9A6D-41A1-9CDA-DE10899648AA}
 | 
							{71A6F937-D11B-4AE4-9933-BB6B4D925665} = {4A92E8A6-9A6D-41A1-9CDA-DE10899648AA}
 | 
				
			||||||
		{8064870C-22EA-4A58-972D-DBD57D096D91} = {2A381C57-2697-427B-9F10-55DA11FD02E4}
 | 
							{8064870C-22EA-4A58-972D-DBD57D096D91} = {2A381C57-2697-427B-9F10-55DA11FD02E4}
 | 
				
			||||||
		{D9419896-BFB0-47C1-BEFD-A6C48394643B} = {4A92E8A6-9A6D-41A1-9CDA-DE10899648AA}
 | 
							{D9419896-BFB0-47C1-BEFD-A6C48394643B} = {4A92E8A6-9A6D-41A1-9CDA-DE10899648AA}
 | 
				
			||||||
 | 
							{4871434E-481D-4306-B6DD-73595C61A473} = {2A381C57-2697-427B-9F10-55DA11FD02E4}
 | 
				
			||||||
	EndGlobalSection
 | 
						EndGlobalSection
 | 
				
			||||||
	GlobalSection(ExtensibilityGlobals) = postSolution
 | 
						GlobalSection(ExtensibilityGlobals) = postSolution
 | 
				
			||||||
		SolutionGuid = {089687FD-5D25-40AB-BA8A-A10D1E137F98}
 | 
					 | 
				
			||||||
		RESX_PrefixTranslations = True
 | 
					 | 
				
			||||||
		RESX_NeutralResourcesLanguage = en-US
 | 
							RESX_NeutralResourcesLanguage = en-US
 | 
				
			||||||
 | 
							RESX_PrefixTranslations = True
 | 
				
			||||||
 | 
							SolutionGuid = {089687FD-5D25-40AB-BA8A-A10D1E137F98}
 | 
				
			||||||
	EndGlobalSection
 | 
						EndGlobalSection
 | 
				
			||||||
EndGlobal
 | 
					EndGlobal
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user