繁体   English   中英

创建一个过程以在用户登录到 Web 应用程序时返回带有日期时间的 32 位 ID(nvarchar)

[英]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 位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)

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

DECLARE @myID uniqueidentifier = NEWID();
DECLARE @myDate datetime = GETDATE();
SELECT @myID, @myDate;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM