问题:
我表中的某些字段的日期格式错误,它们是使用 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
);
只是想看看这是否会按小时订购,但它没有给我这个:
正如你所看到的(在小时字段中)01 然后 02 然后又回到 01...?
无论如何,这里有一个类似的问题我已经悬赏,如果你回答这个问题或那个问题,你将获得赏金,这对于其他情况也很有用
编辑: 我真正想回答的问题如何按字符串的子字符串排序;抱歉,我可以发誓我已经更改了这个,说我想按任何字符串/日期/任何我想知道如何执行以下操作的单个数字排序:Order By Val(Mid(ColumnName,StartPos,结束位置))
注意: Order By 给出了完全错误的结果。