14

我需要将 datetime 从转换2012-07-29 10:53:33.01029/07/2012 10:53:33.

我尝试使用

select CONVERT(varchar(20), GETDATE(), 131)

但根据回历显示日期

11/09/1433 10:53:33:

请帮忙?

4

7 回答 7

33

这可以按如下方式完成:

select CONVERT(VARCHAR(10), GETDATE(), 103) + ' '  + convert(VARCHAR(8), GETDATE(), 14)

希望能帮助到你

于 2012-07-29T09:07:45.773 回答
27
SELECT FORMAT(your_column_name,'dd/MM/yyyy hh:mm:ss') FROM your_table_name

例子-

SELECT FORMAT(GETDATE(),'dd/MM/yyyy hh:mm:ss')
于 2017-02-05T14:58:15.273 回答
3

您可以结合两种格式:

3   dd/mm/yy   (British/French)
8   hh:mm:ss

根据CONVERT()function和 using+运算符:

SELECT CONVERT(varchar(10),GETDATE(),3) + ' ' + CONVERT(varchar(10),GETDATE(),8)
于 2012-07-29T08:07:44.647 回答
0
SELECT CONVERT(CHAR(10),GETDATE(),103) + ' ' + RIGHT(CONVERT(CHAR(26),GETDATE(),109),14)
于 2015-12-02T11:08:40.440 回答
0

MSDN Books Online 上关于CAST 和 CONVERT的章节,你错过了一行正确的答案......你可以使用样式 no。121 ( ODBC canonical (with毫秒) ) 得到你正在寻找的结果:

SELECT CONVERT(VARCHAR(30), GETDATE(), 121)

这给了我以下输出:

2012-04-14 21:44:03.793

更新:根据您更新的问题-当然这不起作用-您正在将字符串(这:'4/14/2012 2:44:01 PM'只是一个字符串-它不是日期时间!)转换为字符串......

您需要首先将您拥有的字符串转换为 aDATETIME然后将转换回字符串!

试试这个:

SELECT CONVERT(VARCHAR(30), CAST('4/14/2012 2:44:01 PM' AS DATETIME), 121) 

现在你应该得到:

2012-04-14 14:44:01.000

显然,所有毫秒都为零,因为您的原始值不包括任何 ....

于 2016-01-12T05:52:38.427 回答
0
CREATE FUNCTION DBO.ConvertDateToVarchar
(
@DATE DATETIME
)

RETURNS VARCHAR(24) 
BEGIN
RETURN (SELECT CONVERT(VARCHAR(19),@DATE, 121))
END
于 2016-03-09T06:24:53.057 回答
-1

这将是varchar但应该根据需要进行格式化。

RIGHT('0' + LTRIM(DAY(d)), 2) + '/'
+ RIGHT('0' + LTRIM(MONTH(d)), 2) + '/'
+ LTRIM(YEAR(d)) + ' '
+ RIGHT('0' + LTRIM(DATEPART(HOUR, d)), 2) + ':'
+ RIGHT('0' + LTRIM(DATEPART(MINUTE, d)), 2) + ':'
+ RIGHT('0' + LTRIM(DATEPART(SECOND, d)), 2)

d您的datetime字段或变量在哪里。

于 2012-07-29T08:07:26.857 回答