如何在ms access 2007中按日期排序?

时间:2012-03-28 06:06:27

标签: ms-access sorting ms-access-2007 access-vba

我想知道如何对显示日期格式为mm / dd / yyyy的数据的文本列进行排序。

2 个答案:

答案 0 :(得分:5)

您首先必须转换为日期才能获得正确的排序。这是一个将Datetext转换为RealDate的查询,然后对该列(字段)进行排序。您也可以单击标题以选择排序顺序。

SELECT 
   t.ID, 
   t.Datetext, 
   DateSerial(Mid([Datetext],InStrRev([Datetext],"/")+1),
              Mid([Datetext],1,InStr([Datetext],"/")-1),
              Mid([Datetext],InStr([Datetext],"/")+1,
                 (InStrRev(Datetext,"/")-InStr([Datetext],"/"))-1)) AS RealDate
FROM Table t
Order By 3

您可以使用IIf来避免来自null的错误:

IIf([Datetext] Is Null,Null,DateSerial(
           Mid([Datetext],InStrRev([Datetext],"/")+1),
           Mid([Datetext],1,InStr([Datetext],"/")-1),
           Mid([Datetext],InStr([Datetext],"/")+1,
              (InStrRev(Datetext,"/")-InStr([Datetext],"/"))-1))) AS RealDate

答案 1 :(得分:2)

在评论中,您说这是一个“文本列,显示来自sql表的日期”。我不确定你的意思,但我认为如果你可以将文本列转换为实际的日期/时间列,情况会更简单。

如果您将从SQL Server导入数据导入Access,请在将这些文本值提取到Access时转换这些文本值。

如果Access表是SQL Server对象的链接,请在SQL Server中创建一个视图,该视图将文本日期列强制转换为与Access兼容的日期类型。然后在Access端,使用指向视图的链接替换现有链接。

如果您需要在Access中编辑日期值,而不仅仅是显示和排序它们,请在视图中包含原始文本列和转换后的日期版本。您的Access是否对文本列进行了编辑;在日期/时间列上排序。