MS Access SQL语句中的最新字符串出现类型不匹配错误

本文关键字:类型 不匹配 错误 字符串 最新 SQL Access 语句 MS | 更新日期: 2023-09-27 18:27:33

当前正在使用C#从Microsoft Access数据库迁移到Microsoft SQL Server数据库。我正试图创建一个查询,从Access数据库中提取数据,并按两列排序:SurnameDate。挑战在于Date是以下示例格式的字符串:12.01.13(即YY.MM.DD),它应该表示2012年1月13日。所以我在Access中尝试了以下查询:

SELECT * FROM [Contacts 2012]
  order by Surname, CDate(Format(Date, "0000-00-00"));

然而,我收到这个错误:

标准表达式中的数据类型不匹配

所以我觉得我已经接近了。我尝试了几种不同的格式,也许还有DateValue,但老实说,我记不清了。我看了斯塔克夫弗洛内外的其他帖子,但都无济于事。

MS Access SQL语句中的最新字符串出现类型不匹配错误

您说过您的日期是YY.MM.DD格式的字符串。如果这对于所有存储的[Date]值都是正确的。。。这意味着所有行的CCD_ 6。。。无论您将这些值排序为文本还是将其转换为日期/时间值,这些值都将按相同的顺序排序。

所以我建议这个问题。。。

SELECT *
FROM [Contacts 2012]
ORDER BY Surname, [Date];

如果这返回了您想要的内容,则可以避免在尝试将字符串转换为实际日期时出现的数据类型错误。此外,如果在[Date]列上有一个索引,查询的执行速度将大大加快。

请注意,如果您的某些[Date]值在YY.MM.DD格式中是而不是,则此方法不适用,例如"12.1.13".

使用Regex.Replace作为日期格式,使用Regex.Split为年份添加2位数字。

不知道我最终是如何解决这个问题的,但如果内存可用,我实际上是手动对数据库进行排序的,方法是自然打开数据库,按姓氏列的字母顺序排序,然后手动或通过select语句按日期列排序。