我正在尝试显示日期列的月份和YY部分,使其显示为
原始格式
Apr 12 2009;
Feb 20 2009;
Dec 24 2008;
May 18 2009;
Jan 8 2009;
Dec 6 2008;
Apr 19 2009;
Jan 4 2009;
May 13 2009;
Jan 5 2009
从这些日期开始,应该剔除日期部分,使其显示为“Apr 09”,并且仍然可以按日期排序,使其显示为:
Dec 08;
Jan 09;
Feb 09;
Mar 09;
Apr 09;
May 09
谢谢, 下垂。
答案 0 :(得分:2)
如果要将日期作为字符串存储在数据库中,则需要使用与ISO-8601标准相同的格式,即使用数字月份并将最重要的值放在第一位。
要进行文本排序,您的值需要看起来像:
08-12, 09-01, 09-02, 09-03, 09-04, 09-05
但是,我建议您将日期作为日期时间值存储在数据库中,并在显示值时注意格式。这样你就可以轻松地在数据库中对它们进行排序(并且还可以进行任何其他处理,例如获取两个日期之间的差异)。
从日期时间值,您可以轻松获得所需的格式。例如,在.NET中,您可以使用theDate.ToString("MMM yy")
完全按照您的要求格式化日期。在从数据库获取数据后进行格式化时,格式不是文本可排序的问题不是问题。
答案 1 :(得分:0)
您需要LEFT函数,并且可以在SQL SERVER中对datetime或smalldatetime进行排序。
答案 2 :(得分:0)
你没有说哪个数据库,这是用于SQL Server ... 尝试:
declare @x table (datestring nvarchar(30))
insert into @x values ('Feb 20 2009')
insert into @x values ('Dec 24 2008')
insert into @x values ('May 18 2009')
insert into @x values ('Jan 8 2009')
insert into @x values ('Dec 6 2008')
select * from @x
SELECT
LEFT(CONVERT(varchar(30),convert(datetime,datestring),109),3)+' '+SUBSTRING(CONVERT(varchar(30),convert(datetime,datestring),121),3,2)
FROM @x
ORDER BY CONVERT(datetime,datestring)
您不应该将日期存储在字符串中,它需要更多空间,并且难以对它们进行排序和比较。