首页 新闻 会员 周边

ASP.NET文本转日期,并按日期从近到远排序.

0
[已解决问题] 解决于 2010-08-09 10:26

现在Table表有字段field,类型为文本。原来是用来存日期时间的如:"7/27/2010 10:27:58 AM”

"8/27/2010 10:27:58 AM" "9/27/2009 10:27:58 AM"等等。

现在我的问题是如果按日期从近到远排序,但 "9/27/2009 10:27:58 AM" 就排到了第一。我怎么才可以令到 ""8/27/2010 10:27:58 AM""排第一呢?请各位高手来帮帮忙,小弟不胜感激。

问题补充: 谢谢1楼,打错了。
LitterKen的主页 LitterKen | 初学一级 | 园豆:100
提问于:2010-08-06 17:01
< >
分享
最佳答案
0

在使用SQL查询的时候直接将日期转换为date类型然后order by 日期 asc既可

 

select convert(date,postdate) as postdate from table order by postdate asc
kyo-yo | 大侠五级 |园豆:5587 | 2010-08-08 12:41
谢谢各位的帮助!结合各位的答案本人采用以下语句: select convert(datetime,postdate) as postdate from table order by postdate asc
LitterKen | 园豆:100 (初学一级) | 2010-08-09 10:28
@LitterKen: 排序的字段"postdate " 是 convert(datetime,postdate) 还是原来的postdate?.确定吗
邢少 | 园豆:10926 (专家六级) | 2010-08-09 11:42
@邢少:不是的,是另外起的,可以不用postdate,用postdate2
kyo-yo | 园豆:5587 (大侠五级) | 2010-08-09 12:05
@顾磊(kyo-yo):明白了
LitterKen | 园豆:100 (初学一级) | 2010-08-13 10:58
其他回答(4)
0

但 "9/27/2009 10:27:58 AM" 就排到了第一。我怎么才可以令到 "9/27/2009 10:27:58 AM"排第一呢?

这句话是不是有问题。

升序asc,降序desc。

Astar | 园豆:40805 (高人七级) | 2010-08-06 17:17
这是文本类型,如果用desc的话,"9/27/2009 10:27:58 AM"就排到第一啦,因为它以9开头。我现在想要的是"8/27/2010 10:27:58 AM" 排第一。
支持(0) 反对(0) LitterKen | 园豆:100 (初学一级) | 2010-08-06 17:26
@LitterKen:要么考虑把数据字段类型转换一下,或者先取出想要的数据,然后再转换类型放入DataTable里,再排序输出。
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-08-07 07:57
0

楼主这个问题还真不好解决。问题是你的日期格式数据是“字符串”。字符串的排序和时间类型的排序是不一样的。

建议还是对数据结构进行调整。比如转换数据列类型。

邢少 | 园豆:10926 (专家六级) | 2010-08-06 17:26
就算是字符串,在数据库里面还是可以直接排
支持(0) 反对(0) LyZane | 园豆:35 (初学一级) | 2010-08-07 15:18
0

        public class DateTimeStringComparer : IComparer<string>
        {
            public readonly static DateTimeStringComparer SingletonInstance = new DateTimeStringComparer();

            #region IComparer<string> 成员

            public int Compare(string x, string y)
            {
                DateTime m = DateTime.Parse(x);
                DateTime n = DateTime.Parse(y);

                return DateTime.Compare(m, n);
            }

            #endregion
        }

 

DataTable dt = new DataTable();
            OrderedEnumerableRowCollection<DataRow> orderedDataRows= dt.AsEnumerable().OrderBy(o => (string)o["your datetime string column name"], DateTimeStringComparer.SingletonInstance);

Launcher | 园豆:45045 (高人七级) | 2010-08-06 18:01
0

转换成DateTime就可以进行比较

dnteye | 园豆:308 (菜鸟二级) | 2010-08-09 09:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册