转换日期后只获取日期而不是时间

时间:2018-01-24 16:02:21

标签: sql database sql-server-2008

我试图在Sql Server 2008中将日期转换为mm / dd / yy格式但转换后我只有格式化日期但在我的数据库中也有时间。我的数据库值是:

2003-02-28 17:22:43.000
2003-02-28 17:22:43.000
2003-02-28 17:24:26.000
2003-02-28 17:24:26.000
2003-03-24 09:45:25.000
2003-03-24 09:45:25.000
2003-03-24 09:46:36.000
2003-03-24 09:46:36.000
2006-07-20 12:47:31.070
2003-03-27 15:44:53.000
2003-03-27 15:44:53.000
2003-03-27 15:51:56.000
2003-03-27 15:51:56.000
2003-03-27 16:05:03.000

我对转换日期格式的查询是

SELECT CONVERT(VARCHAR(20), StatusDate, 101) AS Post_Converted,StatusDesc, RowVersionInitials from PurchaseOrderStatusHistory

我的输出是

05/29/2014
05/29/2014
05/29/2014
05/29/2014

日期已成功格式化,但'时间'不见了 。请建议我如何获得数据库时间。

2 个答案:

答案 0 :(得分:1)

CONVERT接受第三个参数,在您的情况101中指定格式。

Find details here

你需要的是 - 可以 - 这个

SELECT CONVERT(VARCHAR(20), StatusDate, 120) 

......或其他合适的输出格式。

对于SQL Server 2012+,有FORMAT(),但是对于v2008,您无法使用此...

答案 1 :(得分:1)

由于某种原因,SQL Server不提供带有时间组件的mm / dd / yyyy。我建议你使用格式120 - ISO标准格式 - 但你是专门要求这个。

您可以将这些值连接在一起:

SELECT CONVERT(VARCHAR(20), StatusDate, 101) + ' ' + CONVERT(VARCHAR(20), StatusDate, 108) AS Post_Converted,
       StatusDesc, RowVersionInitials 
FROM PurchaseOrderStatusHistory;

而不是108,你可能想要114:

SELECT CONVERT(VARCHAR(20), StatusDate, 101) + ' ' + CONVERT(VARCHAR(8), StatusDate, 114) AS Post_Converted,
       StatusDesc, RowVersionInitials 
FROM PurchaseOrderStatusHistory;

这使您可以灵活地添加毫秒。