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

时间:2016-10-09 10:27:43

标签: c# sql datetime

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

例如,10/9/2016是第一个交易保存的日期,如10920161,下一个交易保存为10920162,依此类推。序号在每天后重置为1.

我该怎么做?

1 个答案:

答案 0 :(得分:1)

在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)

获取该日期的交易数量,并为其添加一个。 Concat,带有今天日期的格式化字符串。

如果您今天的日期已有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;