C#10,带来了Date和Time类型

C#10引入了日期DateOnly,时间TimeOnly:

//从DateTime转换 Console.WriteLine(DateOnly.FromDateTime(DateTime.Now)); //从字会串转换 Console.WriteLine(DateOnly.Parse(2021-10-23)); //从0001-01-01到现在的天数 Console.WriteLine(DateOnly.FromDayNumber(738085));  //从DateTime转换 Console.WriteLine(TimeOnly.FromDateTime(DateTime.Now)); //从TimeSpan转换 Console.WriteLine(TimeOnly.FromTimeSpan(new TimeSpan(12,12,12))); //从字符串转换 Console.WriteLine(TimeOnly.Parse(12:13:14)); //从带格式的字t会串转换 Console.WriteLine(TimeOnly.ParseExact(12时13分14秒,HH时mm分ss秒));

结果:

 

 

 由此想到数据库有Date和Time类型,能不能使用,试验一下:

CREATE TABLE [dbo].[Test](   [ID] [int] IDENTITY(1,1) NOT NULL,   [CreateDate] [date] NULL,   [CreateTime] [time](7) NULL ) ON [PRIMARY]

查看ado.net下是否有效

using var con = new SqlConnection(server=.;database=testdb;uid=sa;pwd=sa;TrustServerCertificate=True;); var sql = @ INSERT INTO [dbo].[Test]            ([CreateDate]            ,[CreateTime])      VALUES            (@CreateDate            ,@CreateTime); using var cmd = new SqlCommand(sql, con); con.Open(); cmd.Parameters.Add(new SqlParameter(@CreateDate, SqlDbType.Date) { Value = DateOnly.FromDateTime(DateTime.Now) }); cmd.Parameters.Add(new SqlParameter(@CreateTime, SqlDbType.Time) { Value = TimeOnly.FromDateTime(DateTime.Now) }); cmd.ExecuteNonQuery();

看来还没有适配这种类型(现在是Preivew版)

 

 

 

  想要更快更方便的了解相关知识,可以关注微信公众号