时间排序问题!!如何将时间排好......

.

详细一点的回答:
看来你提供的图片来自数据表的屏幕截图。
设:数据表的名称为"学生表",时间字段的名称为"出生日期";
1 改变时间字段的显示格式:如果你的时间字段的数据类型是日期型或日期时间型之类,而且你对当前的日期显示格式不满意,则:配合修改操作系统(例如WINDOWS XP)和数据表的DBMS(姑且将EXCEL也算吧)的日期显示模式,使日期显示格式符合自己的习惯:
①在WINDOWS XP的“控制面板”中点击“区域和语言选项”→点击弹出窗口的“区域选项”卡的“自定义”按钮左边的组合框,选取“中文(中国)”→点击“区域选项”卡的“自定义”按钮→在弹出的“自定义区域选项”窗口的“日期”选项卡上,点击“短日期格式”右边的组合框,选取“yyyy-MM-dd”,其它框的值按你的喜好选取→连续按“确定”退出“控制面板”;
②打开你的"学生表",在你的DBMS的相关菜单中查找、使用日期格式设置功能将日期格式设为“短格式”(这样DBMS将采用WINDOWS的格式),或“ANSI”之类与“yy-MM-dd”相似的格式。【各种DBMS的日期设置方法不一样,若有需要,请追问已联系我】
这样,你的数据表中的日期字段就可显示为“2010.08.31”而不再是“31.10.2010”了,当然,仅仅是改变了显示格式,表内存储的数据值没有变化。
2. 排序前的"出生日期"字段处理:如果"出生日期"字段的数据类型是日期型或日期时间型之类【一般应如此】或已经是“yyyy-MM-dd”类的格式,则不需对其进行其它处理,直接到3;如果是字符型或文本型之类【以字符型字段存储日期型数据,费力不讨好啊】且是如图所示的"dd.MM.yyyy"格式,则要交换每条记录的该字段值中的年份与日子部分的位置:
2.1 如果你用的DBMS直接支持SQL,例如VFP6,则用命令或编程方式执行:
UPDATE 学生表 出生日期=RIGHT(ALLT(出生日期),4)+SUBS(ALLT(出生日期),3,4)+LEFT(ALLT(出生日期),2)
2.2 如果你的数据表是 ACCESS 或 EXCEL,则:
参照1中的①、②,配合修改WINDOWS和ACCESS或EXCEL的日期显示模式,使日期显示格式与"出生日期"的显示格式相同【即"dd.MM.yyyy"格式】→将"出生日期"的数据类型改为日期型→再配合修改WINDOWS和ACCESS或EXCEL的日期显示模式,使日期显示格式为"yyyy-MM-dd",即可;
或:在ACCESS环境或EXCEL环境,及VBE环境编程并运行,交换"出生日期"字段值中的年、日位置。【此法较繁琐,具体过程略去】
3 排序:
3.1 如果你用的DBMS直接支持SQL,例如VFP6,则用命令或编程方式执行:
SELECT * INTO DBF 新学生表 FROM 学生表 WHERE 条件1 ORDER BY 出生日期 DESC
上条语句中:"*" 表示将"学生表"的所有字段都输出到结果中;"新学生表"是存放SELECT操作结果的目标数据表名称;"学生表"是参加SELECT操作的源数据表;"条件1"代表提取并排序的记录要满足的条件表达式;"出生日期"是排序的依据字段;"DESC"表示按降序排序【取消"DESC"或改写为"ASC"则按升序排序】。
3.2 如果你的数据表是 ACCESS 或 EXCEL,则:打开数据表→在相关菜单中查找、使用排序功能→将数据表按"出生日期"字段 升序或降序 排序,即可。
4 任务完成。
根据你的要求,重点主要是3 排序部分(核心是SELECT语句),其次是1 改变时间字段的显示格式部分。
下面是SQL SERVER 2005联机帮助中SELECT语句中你要用到的部分的摘录,若有兴趣,可参阅。
①语法摘要
SELECT select_list [INTO new_table] FROM table_source [WHERE select_conditions][ORDER BY {order_by_expression [ASC|DESC]}[,...n]]
其中:
●<select_list>::={ [{table_name|view_name|table_alias}.]* | column_name [AS column_alias] } [,...n]
●<table_source>::={table_or_view_name [[AS] table_alias]|<join_table>}
<join_table>::={<table_source> <join_type> <table_source> ON <join_condition>}
<join_type>::=[{INNER|{{LEFT|RIGHT|FULL} [OUTER]}}|CROSS]?JOIN
②参数说明
●select_list:选择列表。是逗号分隔的表达式列表,描述结果集的列。每个表达式同时定义结果集列的数据类型、大小和数据来源。可以是对源表列或其他表达式(如常量或函数)的引用。表达式的最大数目是4096。
table_name|view_name|table_alias:将其后的*|column_name的作用域(源表)限制为指定的表或视图。缺省则表示*|column_name的源表是FROM子句中指定的table_source。
* 指定返回源表的所有列,其顺序对应于源表中的顺序;column_name指定要返回的源表中的列名。源表为2个及以上表且有同名列时,应指定column_name的源表名。
AS column_alias指定将结果集中的列名由其前面的column_name改为column_alias。
●FROM <table_source>:该子句指定select_list的数据来源(源表)。源表可以是基本表、视图、连接表。除select_list中仅包含常量、变量和算术表达式外,FROM子句是必需的。
table_or_view_name:表名或视图名。可以指定所在的数据库名([database_name.])。
[AS] table_alias:为源表指定别名(仅供本次查询使用),有利于简化书写和自连接。
joined_table:表示源表是连接表(由两个或更多表的积构成的结果集)。
join_type:指定连接操作的类型:INNER为内连接(默认设置),FULL为全连接,LEFT为左连接,RIGHT为右连接;OUTER强调注明是外连接;CROSS为交叉连接。
ON <join_condition>:指定连接条件(连接列)。可使用列运算符、比较运算符和其它任何谓词;连接列的数据类型必须相同或兼容,否则必须用CONVERT函数转换数据类型。
●WHERE select_conditions:定义要返回的行应满足的条件(其中谓词数量无限制)。
●ORDER BY子句定义结果集中行的排序依据及方式。但ORDER BY子句在子查询中无效。
order_by_expression:指定排序依据(据以排序的列)。可按列名或列别名指定;可由表名或表达式限定;可包括选择列表中未出现的项;可指定多个排序列。ORDER BY子句中排序列的顺序决定排序后结果集的结构。ASC|DESC指定排序方式,ASC为升序(默认值),DESC为降序。
③备注
●关于空值:排序时视为最小值;分组时将分组列为空值的所有行分在同一个独立的组。
●对数据库对象的每个引用都不得引起歧义,必要时在被引用对象名称前标示其父对象。
●SELECT语句的执行过程:a.根据WHERE子句条件,从FROM子句指定的源表中选择满足条件的行,再按SELECT子句指定的列及其顺序投影。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-27
你想如何排?这是数据库中的数据吗? 如果是,此列数据的数据类型是什么 ,是varchar还是date? 问题补充明确,才好给你解决追问

你好.这是数据库中的数据,date的~~~就是不能排列好,请指点一下

追答

ORDER BY TO_CHAR(TIME,'YYYYmmDD')DESC
或 ORDER BY TO_CHAR(TIME,'YYYYmmDD')ASC

追问

可以详细点吗?我是新手.......

相似回答