首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL选择记录的创建日期顺序

SQL选择记录的创建日期顺序
EN

Stack Overflow用户
提问于 2012-01-11 14:56:36
回答 2查看 572关注 0票数 0

我有一个在SQL Server 2005上运行的旧系统。

当前表只有日期列YYYYMMDD,它缺少运行序列号和时间。

可以选择a表并按时间顺序排序吗?或者换句话说,对返回结果进行排序,并根据记录的创建日期和时间对记录进行排序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-11 15:01:20

如果您没有任何有效的时间信息或其他信息-比如未修改的向量自动编号(IDENTITY) -那么一般的答案是NO

而不是

关键在于细节--这取决于你使用的数据库引擎。

票数 1
EN

Stack Overflow用户

发布于 2016-01-30 04:02:11

只是为了能帮助其他人。(我意识到该操作提到了MSSQL 2005)

在SQL2008和更高版本中,您可以使用%%physloc%%虚拟列来执行此操作。这是没有文档的,也是不受支持的。然而,它已经被证明在许多情况下是有帮助的。

%%physloc%%中的十六进制值不仅表示文件号和页号;它们还指定页中的槽号。然而,编码并不是真正的人类可读的。

以下函数可用于理解此虚拟列中的值。

1. sys.fn_PhysLocFormatter函数

此函数将%%physloc%%返回的十六进制值转换为人类可读的格式。你可以这样使用它:

代码语言:javascript
复制
SELECT *,sys.fn_PhysLocFormatter(%%physloc%%) AS PLF
  FROM dbo.tst AS T
ORDER BY PLF;

此函数的输出格式为(FileNumber:PageNumber:SlotNumer)。以下是上述查询的输出:

2. sys.fn_PhysLocCracker函数

这是一个表值函数,您必须使用CROSS APPLY语句在查询中调用它:

代码语言:javascript
复制
SELECT * FROM dbo.tst AS T
CROSS APPLY sys.fn_PhysLocCracker(%%physloc%%) AS FPLC
ORDER BY FPLC.file_id, FPLC.page_id, FPLC.slot_id;

它返回三列:file_idpage_idslot_id。与您在上一个示例中看到的表一起使用,输出如下所示:

参考文献:

Where are my Rows? – Using the %%physloc%% Virtual Column

SQL Server - Find Physical Location of Records

SQL Server 2008: New (undocumented) physical row locator function

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8815327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档