从datetime sql中获取日期而不转换为varchar,以便我可以在Excel中进行排序。

7

目前SQL返回的日期格式为2013-07-01 00:00:00.000。我只想要以mm/dd/yyyy格式显示日期部分,这样当我将其导出到Excel中时,仍然可以根据升序或降序进行排序。我尝试使用varchar,但在Excel中无法排序。

4个回答

14

你可以转换为日期,但Excel可能会将其显示为数字,不确定。

SELECT CONVERT(DATE, col) FROM dbo.table;
否则,您可以使用特定的样式,例如。
-- yyyy-mm-dd - standard, unambiguous format
SELECT CONVERT(CHAR(10), col, 120) FROM dbo.table;

或者

-- mm/dd/yyyy - ambiguous, regional format
SELECT CONVERT(CHAR(10), col, 101) FROM dbo.table;

1
@user1733271 是的,你的评论只是确认,还是有问题? - Aaron Bertrand
如果我使用CHAR,在Excel中将无法按日期排序。 - user1733271
所以在Excel中,您需要选择列并告诉它这是一个日期。 - Aaron Bertrand
我想要以月/日/年的形式呈现。 - user1733271
你认为如果你不告诉Excel这是一个日期,mm/dd/yyyy格式就会像魔法一样按日期排序吗?使用mm/dd/yyyy格式,它很可能仍然会按字符串排序,这样做有意义吗?比如先是2012年1月,然后是2013年1月,接着是2012年2月,最后是2013年2月。 - Aaron Bertrand

5

要将日期格式转换为mm/dd/yyyy,请使用格式101将其转换为VARCHAR类型;

SELECT CONVERT(VARCHAR, GETDATE(), 101);

> 08/01/2013

An SQLfiddle.


4

尝试使用 CAST 转换为日期类型:

SELECT Cast('2013-07-01 00:00:00.000' AS DATE) 

0

对于dd/mm/yyyy格式,请使用103 例如: SELECT CONVERT(VARCHAR(10), COL_Name, 103);

24/08/2016


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接