我的数据库13-04-2018 1:05:00
中有以下日期时间格式(作为varchar(。
我需要将其转换为以下格式:2018-04-13 01:05:00.
为日期时间。
普通转换函数无法执行此操作,因为它们尝试占用第 13 个月,而该月不存在。此错误:
结果是将varchar 数据类型转换为日期时间数据类型 值超出范围。
有人知道如何转换此日期问题吗?
无论使用哪种语言,使用日期时间总是很痛苦,因为世界上所有不同的格式。
要解决当前的问题,您需要使用格式样式,这是转换的第三个参数。就个人而言,我在这里的建议是存储为日期时间,因为将日期时间存储为字符串从来都不是一个好主意。以后它变得太乱了,但如果以您想要的格式保存,它将被保存为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
这从月份在日之前的格式中获取日期,并反转 2 个值(月和日(
SELECT CONVERT(DATETIME, '2018-13-04 01:05:00', 103);
结果:2018-04-13 01:05:00.000
这应该适合您的要求...
SELECT FORMAT(yourdate, 'yyyy-dd-MM')
您的解决方案兄弟...
DECLARE @d DATETIME = GETDATE()
SELECT FORMAT ( @d, 'MM-dd-yyyy hh:mm:ss', 'de-de' ) AS 'Hoping your result'