想要从db表日期获取MAX(ID),但它在sqlserver 2008 r2中仅返回相同的ID

时间:2013-01-30 07:39:14

标签: sql-server-2008-r2

我正在尝试从数据库表中获取最大ID,并希望在win表单加载时显示它。 我使用以下查询来获取最大ID。

SELECT ISNULL(MAX(ID),0)+1  FROM StockMain WHERE VRDATE = '2013-01-30'

上面应该返回今天的最大ID。例如,如果我这句话首次出现,它将为我返回值'1'。在ID ='1'上保存第一条记录后,它应该给我MAX(ID)='2'。但它返回值1。

任何建议或解决方案????

1 个答案:

答案 0 :(得分:0)

疯狂猜测......但是VRDATE的数据类型是什么?它是否包含时间组件,还是只是一个日期?

如果它包含一个时间组件,指示您保存记录的时间,它将不会通过VRDATE = '2013-01-30'检查,因为这默认为午夜时间。由于时间不相同,它们并不相等。

相反,请尝试:

SELECT ISNULL(MAX(ID),0)+1  
FROM StockMain 
WHERE VRDATE BETWEEN '2013-01-30' AND '2013-02-01'

下一个问题...您是否考虑过使用IDENTITY列而不是手动管理ID值?