我正在尝试编写一个Microsoft SQL服务器过程,以便在用户通过网站登录到应用程序时返回32位ID和日期时间。我在前端有PHP来调用该过程。 Id将是用于评估用户会话并更新表中的会话的会话。
我有一个问题想出一个可以生成32位id和日期时间返回PHP调用的过程。我是MS SQL的新手我需要帮助。
对于你的整数:
您可以使用内置的RAND()
函数在0和1之间生成正十进制,并将其乘以最大32位INT
值2147483647
。
例:
如果您使用的是标量值函数:
...
DECLARE @return INT
SET @return = FLOOR(RAND() * 2147483647)
RETURN(@return)
对于您的日期时间:
您必须使用您希望为其生成日期的日期范围。此外,您必须决定要生成该日期时间的增量(通过DAY
,SECOND
等)。你也可以使用RAND()
,类似于前面的例子和INT
。
例:
假设您正在使用标量值函数:
...
DECLARE @beginDate DATETIME
DECLARE @endDate DATETIME
DECLARE @return DATETIME
SET @beginDate = '2000-01-01 00:00:00'
-- Gets current Datetime
SET @endDate = GETDATE()
-- Days difference in the range
-- Using RAND again, generate a random date in the range
DECLARE @days INT = DATEDIFF(DAY, @beginDate, @endDate)
DECLARE @random INT = ROUND(((@days - 1) * RAND()), 0)
SET @return = DATEADD(DAY, @random, @endDate)
RETURN(@return)
您可以简单地使用NEWID()和GETDATE()函数,然后转换为所需的格式:
DECLARE @myID uniqueidentifier = NEWID();
DECLARE @myDate datetime = GETDATE();
SELECT @myID, @myDate;