小编pva*_*ten的帖子

使用 tSQLt,如何在使用 GETUTCDATE() 时隔离对系统时钟的依赖?

我有一个多次使用 GETUTCDATE() 函数的存储过程。这是一个非常具体的业务流程,所以在这里展示它可能没有多大意义。话虽如此,了解 sproc 只会在今年被调用可能会有所帮助。这是一个人为的例子,它没有显示我正在做的事情的复杂性,但应该有助于说明我在说什么:

CREATE PROCEDURE dbo.GenerateRequestListForCurrentYear AS BEGIN
  SELECT RequestId, StartDate, EndDate FROM Requests
  WHERE YEAR(EndDate) = YEAR(GETUTCDATE());
END;
Run Code Online (Sandbox Code Playgroud)

我的测试是这样的:

CREATE PROCEDURE testClass.[test Requests are generated for the current year] AS BEGIN
  -- arrange
  EXEC tSQLt.FakeTable 'dbo.Requests';
  INSERT INTO dbo.Requests (RequestId, StartDate, EndDate) VALUES
    (1, '2/1/14', '2/10/14'), (2, '2/1/13', '2/10/13');

  SELECT TOP (0) * INTO #Expected FROM dbo.Requests;
  SELECT TOP (0) * INTO #Actual FROM dbo.Requests;
  INSERT INTO #Expected VALUES
    (1, '2/1/14', '2/10/14');

  -- act
  INSERT INTO #Actual …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server tsqlt

5
推荐指数
1
解决办法
1074
查看次数

标签 统计

sql-server ×1

t-sql ×1

tsqlt ×1