问题:
我的表中有一些字段的日期格式不正确,它们是使用C#中的.ToString()方法格式化的,但我打错了一个字母,输入成了这样:MM/dd/yyyy hh:mm/ss tt
现在,如果你仔细看,你会发现MM/dd/yyyy hh:mm----> '/' <---ss
应该是':'
然后我在我的C#代码中进行了修复(也就是说,一些值被格式化为:MM/dd/yyyy hh:mm:ss tt),
问题是,我正在尝试按日期顺序从表中选择值(我不能只按'Datefieldnamehere'排序),因为一些字段的格式不正确,其中包含'/'。
我尝试过的方法:
现在,我想到了一个办法,因为时间总是在同一个位置(这对我来说很重要),所以我可以只取时间中的数字子字符串并将它们排序;首先按上午,然后按下午排序。
我可以使用 MID([ColumnName],11,2)、MID([ColumnName],14,2)、MID([ColumnName],16,2) 进行排序,因为无论日期的分隔符如何,每个日期的格式始终为 M/dd/yyyy hh/mm/ss tt。
所以我尝试了以下方法:
(
SELECT SN, StatusCode, Time, Mid(Time,14,2) + ':'+ Mid(Time,17,2) AS TTI
FROM OrderStatus
WHERE StatusCode = 'Finished' and Left(Time,10) = '4/20/2012'
AND Time LIKE '*AM'
ORDER BY Val(Mid([Time],11,2)) DESC
)
UNION ALL (
SELECT SN, StatusCode, Time, Mid(Time,14,2) + ':'+ Mid(Time,17,2) AS TTI
FROM OrderStatus
WHERE StatusCode = 'Finished' and Left(Time,10) = '4/20/2012'
AND Time LIKE '*PM'
ORDER BY Val(Mid([Time],11,2)) DESC
);
只是想看看是否按小时排序,但它并没有这样做,它给了我这个:
![Err](https://istack.dev59.com/BklHi.webp)
无论如何,有一个类似的问题here我已经放了赏金,如果您回答这个问题或那个问题,您将获得赏金,这对其他场景也很有用。
编辑:我真正想要回答的问题是如何按字符串的子字符串进行排序;对于我晚些编辑很抱歉,我发誓我已经改过了,比如说我想通过任何字符串/日期/任何内容的单个数字进行排序,我想知道如何做到: Order By Val(Mid(ColumnName,StartPos,EndPos))
请注意:Order By 给出完全错误的结果。