[英]Create a procedure to return 32bit ID(nvarchar) with date time when user logs in to a web application
我正在尝试编写一个 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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.