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秒"));

结果:

d0026fb5f336e2a63187b62d9160a23d.png


由此想到数据库有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版)

c843f75cfefc136e0f624d6f57c0d4bc.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值