如何在ssis包2016中以毫秒捕获时间戳

时间:2018-03-05 05:33:53

标签: sql-server datetime ssis etl ssis-2016

如何在2016年ssis包中捕获当前时间戳

我声明了一个变量并使用了表达式但缺少毫秒

@currenttimestamp = (DT_WSTR,50)(DT_DBTIMESTAMP)@[System::StartTime]

我也想要毫秒

由于

2 个答案:

答案 0 :(得分:0)

转换为(DT_DBTIMESTAMP2,3)时问题已解决:

(DT_WSTR,50)(DT_DBTIMESTAMP2,3)GETDATE()

但是时间得到改变,因为它使用getdate()asit返回当前时间,我需要包开始时间我使用了以下

(DT_WSTR,50)(DT_DBTIMESTAMP2,3)@[System::StartTime] 

但是毫秒来自.000

我是否必须在ExecuteSQLTask中使用getdate()并将该值赋给字符串变量。我是ssis的新手,请给出建议。

答案 1 :(得分:0)

在程序包开头的执行SQL任务中使用以下命令,它将为您提供程序包的准确开始时间。

@RunWith(PowerMockRunner.class)
@PrepareForTest(MyFilter.class)
public class MyTest {

    private MyFilter filter;

    @Before
    public void setup() {
        //The most convenient way to get a UUID, have also tried creating one manually
        UUID uuid = UUID.randomUUID();
        mockStatic(UUID.class);
        PowerMockito.when(UUID.randomUUID()).thenReturn(uuid);
        filter = new MyFilter();
    }

    @Test
    public void testMyUUID() {
        //This test works
        assertEquals(UUID.randomUUID(), UUID.randomUUID());

    }

    @Test
    public void testFilterUUID() {
        //This test fails
        assertEquals(UUID.randomUUID(), filter.getUUID());
    }
}