我想为我的产品插入特定的开始日期。 它应该在48小时之前和现在之间。
这是我的代码:
CREATE VIEW getNewID AS
SELECT
DATEADD(MILLISECOND, (ROUND((999 * NEWID()), 0)),
DATEADD(SECOND, (ROUND((((DATEDIFF(SECOND, (DATEADD(DAY, -2, GETDATE())),
(GETDATE())))-1) * NEWID()), 0)), (DATEADD(DAY, -2, GETDATE()))))
AS new_id
此视图将返回指定范围之间的随机日期。下面的函数将返回NEWID()
,因为SQL不允许我在函数中使用NEWID()
。
但是,上面的观点会给我一个错误:
uniqueidentifier与int不兼容。
如果我使用RAND(),这不会发生,但这会为我插入的所有行提供相同的值(我想将它用于我的转换脚本)。
CREATE FUNCTION randomID()
RETURNS uniqueidentifier
AS BEGIN
RETURN (SELECT new_id FROM getNewID)
END
也许有些人遇到过这个问题?
答案 0 :(得分:0)
您可以生成0到48 * 60 * 60 * 1000之间的数字(48小时前) 像这样:
abs(checksum(newid())) % (48*60*60*1000)
并使用DATEADD
SELECT dateadd(millisecond, 0 - abs(checksum(newid())) % (48*60*60*1000), getdate())