我正在开发一个交易网站。创建订阅后,修改日期将插入到表中。我想要完成的是唯一地标识该记录。这是我正在尝试的:
DateTime currentTime = DateTime.Now;
Debug.WriteLine("Current Timestamp is: " + currentTime.ToString("yyyy-MM-dd HH:mm:ss:fff"));
sCmd.CommandText = "SELECT distinct userID FROM table WHERE Report_OID = @reportID AND ModifiedDate = @currentTime";
sCmd.Parameters.AddWithValue("@reportID", reportID);
sCmd.Parameters.AddWithValue("@currentTime", currentTime.ToString("yyyy-MM-dd HH:mm:ss:fff"));
Output:
Current Timestamp is: 2016-06-09 10:19:16:586
Modified Date is: 2016-06-09 10:19:16.553
尝试过这个:
sCmd.CommandText = "SELECT LAST_INSERT_ID();";
IDataReader reader = sCmd.ExecuteReader();
while (reader != null && reader.Read())
{
long lastInsertedID = reader.GetInt64(0);
Debug.WriteLine("return id is : " + lastInsertedID);
}
Got this error:
'LAST_INSERT_ID' is not a recognized built-in function name.
This error may have happened due to the createSubscription method call to create a subscription in the reporting service webservice which handles the insert in the database. I do not have insert statements in my code.
这将会失败,因为毫秒不会相同。我想使用毫秒的原因是为了防止两个用户在同一时间插入订阅时出现多个用户 ID。
我想要弄清楚的是比较这两个日期,这样我就可以准确地获取我的交易的用户ID,并且不用担心如果同时插入两个交易则会获取其他人的用户ID。这可能吗?我是否试图以错误的方式解决这个问题?任何帮助将不胜感激。谢谢。
最佳答案
请原谅我的伪代码(我不经常使用 MySQL),但正确的方法是修改插入以返回语句插入的最后一条记录的标识,而不是尝试匹配内容使用时间戳和用户 ID。代码会更简单、更可靠。这是在 MySQL 中使用 LAST_INSERT_ID()
函数(MS SQL 的 SCOPE_IDENTITY()
函数的近似值)完成的。
例如,您的插入(假设表有一个名为“FooID”的缩进列)可能如下所示:
INSERT INTO Foo (Bar) VALUES ('Biz');
SELECT LAST_INSERT_ID();
如果新记录的 FooID 为 148,那么您的语句将插入该记录并返回 148,此时您可以:
SELECT Bar FROM Foo WHERE FooID = 148;
这应该可以完成您想要做的事情。
关于c# - 比较sql插入日期和c#日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37731567/