SQL 服务器 13 月中的荷兰瓦尔查尔日期问题



我的数据库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' 

最新更新