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

数据库中的C#序列号问题,c#,sql,datetime,C#,Sql,Datetime,我在数据库表中有一列,即事务Id。它的数据类型是var char(50)。现在,我想通过将当前日期与生成的序列号组合来保存一行 例如,10/9/2016是日期,因此第一笔交易保存为10920161,下一笔交易保存为10920162,依此类推。每天之后,序列号重置为1 我该怎么做 在SQL Server中,它可以简单到: transactionId = CONCAT(DATEPART(MONTH, GETDATE()), DATEPART(DAY, GETDATE()),

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

例如,
10/9/2016
是日期,因此第一笔交易保存为10920161,下一笔交易保存为
10920162
,依此类推。每天之后,序列号重置为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)
获取该日期的事务数,并向其中添加一个。用今天日期的格式化字符串表示

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

100920164
运行

编辑: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;
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
但我为每个交易添加了整个交易的日期时间。这不仅是日期,也是时间。@AzherAleem
CONVERT(date,dateColumn)
从DateTime列中提取日期部分。检查SQL FIDLE,它有一个
DateTime
列。@AzherAleem只需将上面的查询转换为linq@Azeraleem检查编辑,这是一个展示想法的片段,根据您的需要进行调整。如果您不熟悉实体框架,请滚动教程,因为这超出了本问题的范围@Azeraleem:你应该问一个新问题并接受这个答案,如果它解决了你当前的问题,那么这是为了哪个RDBMS?请添加一个标记,以指定您使用的是
mysql
postgresql
sqlserver
oracle
还是
db2
——或者其他完全不同的东西。