你能告诉我何时将数据插入表中

时间:2013-07-12 07:37:38

标签: sql database sql-server-2008

我正在使用MS SQL Server 2008,我有一个sql表,其中包含一些数据,每天早上6点由sql作业插入。我遇到的问题是一些数据已经单独插入到作业中,我需要知道何时添加了这些数据。

我可以运行的查询会告诉我这个吗?

5 个答案:

答案 0 :(得分:3)

在表格中添加日期字段。您可以为其指定默认值GETDATE()

然后ORDER BY那个字段。

SELECT Column1, Column2, NewDateColumn
FROM YourTable
ORDER BY NewDateColumn

答案 1 :(得分:2)

我认为简短的答案是否定的,没有神奇的临时SQL查询可以让你在事后找回并找出插入行的时间。

如果您想知道插入行的时间,最简单的方法是简单地添加一个日期或时间戳字段,其中包含一个默认值(如getDate()),该字段会自动填充插入行的日期/时间。

当然,有可用的SQL日志可以跟踪何时插入,更新,删除行等,但这些需要设置和维护。

第三个选项是让插入数据的程序执行一些日志记录。

答案 2 :(得分:0)

您可能需要查看SQL CREATE TRIGGER 以添加逻辑以了解何时添加数据并将该信息记录在另一个表中以进行进一步操作。没有进一步的细节,我不确定我们可以说更多。

答案 3 :(得分:0)

当您指的是已插入的数据时,答案为否,除非您已经有一个默认值为GETDATE()的日期时间列。事件发生后您可以管理的最好方法是查看行的顺序并确定它在两个已知时间之间。

答案 4 :(得分:0)

我要做的是:

/* add new column to keep inserted row date */
ALTER TABLE [schemaName].[tableName] ADD [RecTime] DATETIME;

/* update the existing rows with the current date since there is no way to guess their insertion date */
UPDATE [schemaName].[tableName] SET [RecTime] = GETDATE();

/* and set a constraint to the RecTime column to set current date on every new row added */
ALTER TABLE [schemaName].[tableName] ADD CONSTRAINT [DF_tableName_RecTime] DEFAULT (GETDATE()) FOR [RecTime]

然后您可以获得以下行:

SELECT *
FROM [schemaName].[tableName]
WHERE NOT(DATEPART(hh, RecTime) = 6 AND DATEPART(mi, RecTime) <= 20)

如果你知道sql作业运行了多长时间,你可以'玩''20'