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