将字符串日期转换为ODBC规范日期

时间:2015-05-27 13:38:11

标签: sql sql-server sql-server-2008-r2

我正在使用SQL 2008 R2。我们有第三方软件将字符串传递给存储过程。该字符串的格式为:

2015-05-27 11:59pm

我无权访问此格式,无法更改。我需要将此字符串转换为适当的格式,以便在我的存储过程中正确使用SQL。它的问题在于它忽略了日期的小时和分钟部分。

我想要完成的例子:

2015-05-27 11:59pm = 2015-05-27 23:59:00.000
2015-05-27 01:15am = 2015-05-27 01:15:00.000

我试过了:

CONVERT(VARCHAR(24),'2015-05-27 11:59pm',121)

将其转换为:

2015-05-27 11:59PM

我已经尝试过了     CAST(' 2015-05-27 11:59 pm' AS DATETIME) 将其转换为:

2015-05-27 00:00:00.000

有没有办法可以转换字符串并保留小时和分钟部分?

3 个答案:

答案 0 :(得分:2)

这对我有用:

'='

答案 1 :(得分:0)

试试这个:

error

输出:

SELECT CONVERT(datetime, '2015-05-27 11:59pm', 0)

答案 2 :(得分:0)

这个表达式:

 CONVERT(VARCHAR(24), '2015-05-27 11:59pm', 121)

不正确。它采用日期字符串,使用内部设置将其转换为日期/时间。然后它将该日期/时间转换为字符串。尝试直接将值转换为datetime

 convert(datetime, @param, 121)

但是,我认为存储过程最好只采用日期时间参数而不是字符串。