创建一个过程,以便在用户登录Web应用程序时返回32位ID(nvarchar)和日期时间

问题描述 投票:-2回答:2

我正在尝试编写一个Microsoft SQL服务器过程,以便在用户通过网站登录到应用程序时返回32位ID和日期时间。我在前端有PHP来调用该过程。 Id将是用于评估用户会话并更新表中的会话的会话。

我有一个问题想出一个可以生成32位id和日期时间返回PHP调用的过程。我是MS SQL的新手我需要帮助。

sql sql-server database
2个回答
1
投票

对于你的整数:

您可以使用内置的RAND()函数在0和1之间生成正十进制,并将其乘以最大32位INT2147483647

例:

如果您使用的是标量值函数:

...
DECLARE @return INT

SET @return = FLOOR(RAND() * 2147483647)

RETURN(@return)

对于您的日期时间:

您必须使用您希望为其生成日期的日期范围。此外,您必须决定要生成该日期时间的增量(通过DAYSECOND等)。你也可以使用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)

0
投票

您可以简单地使用NEWID()和GETDATE()函数,然后转换为所需的格式:

DECLARE @myID uniqueidentifier = NEWID();
DECLARE @myDate datetime = GETDATE();
SELECT @myID, @myDate;
© www.soinside.com 2019 - 2024. All rights reserved.