我想在存储过程SQL Sercver 2012中将19/02/2019 12.00.00 AM
格式转换为日期时间。
我尝试了
select cast('19/02/2019 12.00.00 AM' as datetime)
和
select convert(datetime, '19/02/2019 12.00.00 AM', 108)
但是它不起作用
答案 0 :(得分:2)
您需要首先替换“。”使用“:”,因为没有SQL Server时间格式使用“。”。然后您需要使用正确的格式,108是仅时间格式,103是您要寻找的格式。
select convert(datetime, replace('19/02/2019 12.00.00 AM', '.', ':'), 103)
答案 1 :(得分:0)
您应该使用正确格式的VARCHAR文字。正如其他答案所建议的那样,您可以进行更换。我想用以下方式表示,因为它更清楚。下面的作品:
Select convert(datetime, '19/02/2019 12:00:00 AM', 103)
我建议您遵循ISO 8601标准的日期时间文字。无论使用哪种语言环境,都将以相同的方式表示日期时间。进一步了解datetime datetype。我在下面提供有关ISO 8601的内容供您参考。
ISO 8601说明YYYY-MM-DDThh:mm:ss [.mmm]
YYYYMMDD [hh:mm:ss [.mmm]]示例:
1)2004-05-23T14:25:10
2)2004-05-23T14:25:10.487
要使用ISO 8601格式,必须在 格式,包括T,冒号(:)和句点(。) 以格式显示。
方括号表示第二部分的分数为 可选的。时间部分以24小时格式指定。
T表示datetime值的时间部分的开始。
使用ISO 8601格式的优点是它是一种 具有明确规范的国际标准。还有这个 格式不受SET DATEFORMAT或SET LANGUAGE设置的影响。
答案 2 :(得分:0)
尝试用(:)替换(。)
SELECT convert(datetime,REPLACE('19/02/2019 12.00.00 AM','.',':'), 103)