Click here to Skip to main content
15,890,897 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
friends here i need to generate day to day sequence order by using date.... for example: today my first id sequence is 2015/06/25/001 and tomorrow my first id will be 2015/06/26/001..please explain with examples
thank you.....
Posted
Comments
Suvendu Shekhar Giri 26-Jun-15 3:40am    
You are using both PostgreSQL & SQL Server 2012 for the same application, really ?
User-11630313 26-Jun-15 3:44am    
no i am using PostgreSql only....
_Asif_ 26-Jun-15 3:46am    
What have you tried?
User-11630313 26-Jun-15 3:49am    
generate a sequence with the date and it will be automatically reset the next day

1 solution

In SQL Server you can do it like
To get the first number,
SQL
SELECT CAST(DATEPART(YEAR,GETDATE()) AS VARCHAR)+'/'+RIGHT('0'+CAST(DATEPART(MONTH,GETDATE()) AS VARCHAR),2)+'/'+RIGHT('0'+CAST(DATEPART(DAY,GETDATE()) AS VARCHAR),2)+'/'+'001'


You can make it dynamic to check with some field of a table to get latest value like
SQL
DECLARE @OrderSequenceBase VARCHAR(20)
SELECT @OrderSequenceBase= CAST(DATEPART(YEAR,GETDATE()) AS VARCHAR)+'/'+RIGHT('0'+CAST(DATEPART(MONTH,GETDATE()) AS VARCHAR),2)+'/'+RIGHT('0'+CAST(DATEPART(DAY,GETDATE()) AS VARCHAR),2)+'/'

DECLARE @OrderSequenceTrail VARCHAR(3)
SELECT @OrderSequenceTrail=CASE WHEN OrderSequence LIKE @OrderSequenceBase+'%' THEN ISNULL (RIGHT(OrderSequence,3),'0') ELSE '0' END
FROM YourTable
WHERE OrderSequence LIKE @OrderSequenceBase+'%'

SELECT @OrderSequenceBase+RIGHT('00'+CAST(CAST(@OrderSequenceTrail AS INT)+1 AS VARCHAR),3)

Example:
SQL
DECLARE @OrderSequenceBase VARCHAR(20)
SELECT @OrderSequenceBase= CAST(DATEPART(YEAR,GETDATE()) AS VARCHAR)+'/'+RIGHT('0'+CAST(DATEPART(MONTH,GETDATE()) AS VARCHAR),2)+'/'+RIGHT('0'+CAST(DATEPART(DAY,GETDATE()) AS VARCHAR),2)+'/'
 
DECLARE @OrderSequence VARCHAR(20)
SELECT @OrderSequence='2015/06/25/003'
DECLARE @OrderSequenceTrail VARCHAR(3)
SELECT @OrderSequenceTrail=CASE WHEN @OrderSequence LIKE @OrderSequenceBase+'%' THEN ISNULL (RIGHT(@OrderSequence,3),'0') ELSE '0' END
 

SELECT @OrderSequenceBase+RIGHT('00'+CAST(CAST(@OrderSequenceTrail AS INT)+1 AS VARCHAR),3)


I have no idea about PostgreSQL but the approach should work.

Hope, it helps :)
 
Share this answer
 
v3
Comments
User-11630313 26-Jun-15 3:59am    
thank you.....shekhar
Suvendu Shekhar Giri 26-Jun-15 4:02am    
There was a small bug. Fixed it now :)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900