我正在使用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
有没有办法可以转换字符串并保留小时和分钟部分?
答案 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)
但是,我认为存储过程最好只采用日期时间参数而不是字符串。