SQL Server:如何按创建日期排序,而不需要指定列。

12 浏览
0 Comments

SQL Server:如何按创建日期排序,而不需要指定列。

我在SQL Server 2012中有一张常规表,我想在某个查询中按记录的创建日期对数据进行排序。

问题是,我没有一个列来保存每条记录的创建日期。

在没有指定列的情况下,有没有办法做到这一点?

也许数据库中存在一种内置的创建日期信息,我可以以某种方式访问它...

0
0 Comments

SQL Server中没有内置的行创建日期信息。

有一些(商业)工具可以从事务日志中提取这些信息。这是在紧急情况下使用的能力,而不是在正常操作期间使用的。

在没有指定列的情况下,可以使用以下解决方法来按创建日期排序:

1. 使用系统函数CURRENT_TIMESTAMP获取当前的时间戳。

SELECT CURRENT_TIMESTAMP;

2. 创建一个临时表,将原始表的数据插入到临时表中,并在临时表中添加一个名为"CreationDate"的列,并将当前时间戳添加为每一行的创建日期。

CREATE TABLE #TempTable (ID INT, Name VARCHAR(50), CreationDate DATETIME);
INSERT INTO #TempTable (ID, Name, CreationDate)
SELECT ID, Name, CURRENT_TIMESTAMP
FROM OriginalTable;

3. 使用临时表进行排序,按"CreationDate"列进行降序排序。

SELECT ID, Name, CreationDate
FROM #TempTable
ORDER BY CreationDate DESC;

通过以上步骤,可以在没有指定列的情况下按创建日期进行排序。

0
0 Comments

如果没有指定的日期列,就无法按创建日期排序。据我所知,没有内置的每行创建日期。不过,你有其他一些选择。如果你有一个自动生成的标识列(自增),你可以按照该列排序以找出最先添加的行。

你可以尝试使用数据页中的行位置,就像这个回答提到的那样:Equivalent of Oracle's RowID in SQL Server

0