c#数据库中的序列号问题

本文关键字:序列号 问题 数据库 | 更新日期: 2023-09-27 18:12:24

我有一个列在数据库表,即事务Id。它的数据类型是var char(50)。现在,我想通过将当前日期与生成的序列号相结合来保存一行。

例如,10/9/2016是日期,因此第一个事务保存为10920161,下一个事务保存为10920162,以此类推。每隔一天后,将序号重置为1。

我该怎么做?

c#数据库中的序列号问题

在SQL Server中,它可以像这样简单:

transactionId =  
CONCAT(DATEPART(MONTH, GETDATE()), 
       DATEPART(DAY, GETDATE()), 
       DATEPART(YEAR, GETDATE()),
       (SELECT COUNT(1) 
        FROM tableName 
        WHERE CONVERT(DATE, dateColumn) = CONVERT(DATE, getdate())) + 1)

获取该日期的事务数,并为其添加1。与今天日期的格式化字符串连接。

如果你已经有3条记录今天的日期,结果将是:

100920164
运行SQL-Fiddle

编辑:EF建议的片段:

string dateStr = DateTime.Today.ToString("Mdyyyy");
DateTime todayMidnight = DateTime.Today;
DateTime tomorrowMidnight = DateTime.Today.AddDays(1);
obj.transactionId = dateStr + 
                      context.tableName.Count(x=> x.dateColumn >= todayMidnight 
                      && x.dateColumn < tomorrowMidnight) + 1;