Imp*_*ert 0 sql sql-server stored-procedures
我的数据库中有以下日期时间格式(作为varchar)13-04-2018 1:05:00.
我需要将其转换为以下格式:2018-04-13 01:05:00.作为datetime.
正常转换函数无法执行此操作,因为它们尝试执行第13个月,并且该月不存在.这个错误:
将varchar数据类型转换为日期时间数据类型会导致超出范围的值.
有人知道如何转换这个日期问题吗?
由于全世界所有不同的格式,使用日期时间始终是一种痛苦,无论语言如何.
要对当前问题进行排序,您需要使用格式样式,这是CONVERT的第三个参数.我个人在这里建议将其存储为日期时间,因为将日期时间存储为字符串绝不是一个好主意.它稍后会变得太乱,但如果以您希望的格式保存,它将被保存为yyyy-MM-dd hh:mm:ss
SELECT CONVERT(DATETIME, '13-04-2018 1:05:00',103)
Run Code Online (Sandbox Code Playgroud)
您可以创建自己的函数以在所需的输出字符串中对其进行格式化.
CREATE FUNCTION FormatMyDate
(@Date DATETIME) RETURNS VARCHAR(20)
AS
BEGIN
RETURN FORMAT(@Date,'yyyy-dd-MM hh:mm:ss')
END
Run Code Online (Sandbox Code Playgroud)
然后你可以在这样的SELECT语句中调用它:
SELECT dbo.FormatMyDate(yourDateCol)
FROM yourTable
Run Code Online (Sandbox Code Playgroud)