我的数据库13-04-2018 1:05:00
中有以下日期时间格式(作为varchar)。
我需要将其转换为以下格式:2018-04-13 01:05:00.
作为日期时间。
正常转换功能无法执行此操作,因为它们会尝试执行第13个月,而该月份并不存在。这个错误:
导致将varchar数据类型转换为日期时间数据类型 在超出范围的价值。
有人知道如何转换此日期问题吗?
答案 0 :(得分:5)
由于全世界所有不同的格式,使用日期时间始终是一种痛苦,无论语言如何。
要对您的问题进行排序,您需要使用格式样式,这是CONVERT的第三个参数。我个人在这里建议将其存储为日期时间,因为将日期时间存储为字符串绝不是一个好主意。稍后它会变得太乱,但如果以您希望的格式保存,它将保存为yyyy-MM-dd hh:mm:ss
SELECT CONVERT(DATETIME, '13-04-2018 1:05:00',103)
您可以创建自己的函数,将其格式化为所需的输出字符串。
CREATE FUNCTION FormatMyDate
(@Date DATETIME) RETURNS VARCHAR(20)
AS
BEGIN
RETURN FORMAT(@Date,'yyyy-dd-MM hh:mm:ss')
END
然后你可以在这样的SELECT
语句中调用它:
SELECT dbo.FormatMyDate(yourDateCol)
FROM yourTable
答案 1 :(得分:0)
这将从月份前一天的格式中取出日期并反转2个值(月和日)
SELECT CONVERT(DATETIME, '2018-13-04 01:05:00', 103);
结果: 2018-04-13 01:05:00.000
答案 2 :(得分:0)
这应该适合你的要求......
SELECT FORMAT(yourdate, 'yyyy-dd-MM')
答案 3 :(得分:0)
你的解决方案......
DECLARE @d DATETIME = GETDATE()
SELECT FORMAT ( @d, 'MM-dd-yyyy hh:mm:ss', 'de-de' ) AS 'Hoping your result'