sql字符串转换成日期

说实话,我经常使用这个 CONVERT 函数。
如果要将“2 02 3 -1 0-2 7 ”等字符串转换为 SQL 可以理解的日期格式,则应使用此选项。

例如,写: SQL 声明 @date VARCHAR(1 0) = '2 02 3 -1 0-2 7 ' DECLARE @converted_date DATETIME = CONVERT(DATETIME, @date)
这里,@date是一个字符串,所以使用CONVERT将其转换为DATETIME类型。
如果不指定样式,则默认使用SQL Server通用格式。

如果要指定日期格式,例如将欧洲格式“2 7 /1 0/2 02 3 ”转换为美国格式“1 0/2 7 /2 02 3 ”,则需要添加样式参数。
SQL 声明 @date VARCHAR(1 0) = '2 7 /1 0/2 02 3 ' DECLARE @converted_date DATETIME = CONVERT(DATETIME, @date, 1 01 )
样式 1 01 是美国月/日/年格式。
请注意,并非所有数据库都支持所有样式,具体取决于您使用的 SQL Server 版本。

还有另一种情况,字符串本身是日期格式,但被视为文本。
例如,如果表中存储“2 02 3 1 02 7 ”,则使用 CONVERT 对其进行转换。
SQL 声明 @date VARCHAR(8 ) = '2 02 3 1 02 7 ' DECLARE @converted_date DATETIME = CONVERT(DATETIME, @date, 1 1 2 )
样式 1 1 2 是 8 位数的年、月和日格式。

关键是要明白原始字符串格式是什么,目标日期格式是什么,并选择合适的样式。
SQL Server 很好地支持阿拉伯日期格式,但使用错误的格式可能会弄乱您的结果。
例如,如果您使用样式 2 2 保存“2 02 3 -1 0-2 7 ”,它可能会恢复为“2 7 /1 0/2 02 3 ”。

sql日期格式转换

这里有一个陷阱:在使用 STR_TO_DATE 和 DATE_FORMAT 之前,没有检查输入和输出格式。
实用提醒:首先测试日期格式以确保转换正确。