我有一个ID
我在asp.net vb app和SQL Server中创建的格式为MM/YYYY/##
,其中#是整数。当用户生成表单时,整数在整月中递增1,因此目前它是08/2013/39
。
我用于此的代码如下
Dim get_end_rfa As String = get_RFA_number()
Dim pos As Integer = get_end_rfa.Trim().LastIndexOf("/") + 1
Dim rfa_number = get_end_rfa.Substring(pos)
Convert.ToInt32(rfa_number)
Dim change_rfa As Integer = rfa_number + 1
Dim rfa_date As String = Format(Now, "MM/yyyy")
Dim rfa As String = rfa_date + "/" + Convert.ToString(change_rfa)
RFA_number_box.Text = rfa
Public Function get_RFA_number() As String
Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("AnalyticalNewConnectionString").ConnectionString)
conn.Open()
Dim cmd As New SqlCommand("select TOP 1 RFA_Number from New_Analysis_Data order by submitted_date desc", conn)
Dim RFA As String = (cmd.ExecuteScalar())
conn.Close()
Return RFA
End Function
我需要在每个月的月初将整数重置为1。我该怎么做?
答案 0 :(得分:1)
从表中选择max(记录),并将currentDate与记录的Date进行比较。当他们不同。重置ID = 1。 像这样的SQL
select ID, recordDate
from TABLE
where ID = (select max(ID) from TABLE)
where datename(YYYY ,getdate()) = datename(YYYY ,recordDate())
and datename(MM ,getdate()) = datename(MM ,recordDate())
答案 1 :(得分:0)
结合上面的答案和一些进一步的研究我正在使用下面的代码。这解决了我的疑问。
declare @mydate as date
set @mydate = CONVERT(char(10), GetDate(),103)
if convert(char(10), (DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)), 126) = CONVERT(char(10), GetDate(),126)
select right(convert(varchar, @mydate, 103), 7) + '/01'
else
select TOP 1 RFA_Number
from New_Analysis_Data
order by submitted_date desc
答案 2 :(得分:0)
@ very9527的方法有效(+1),但是日期部分操作很尴尬。基于原始代码的另一个选项的概述:
get_end_rfa
rfa_date
你需要担心并发吗?如果两个实例同时尝试添加“下一个”值会发生什么?