首页 > 解决方案 > SQL Server:将“mm/dd/yyyy”插入“date”或“datatime2”列的最佳方法?

问题描述

我有一堆mm/dd/yyyy以 CSV 格式存储的值。一个例子是06/26/2017。我发现我无法将其插入声明为datedatetime2类型的列中。我可以做的是先修改那个(空)列varchar,然后再插入。

但是此时,作为 varchars 插入后,如何将此列转换为“date”或“datatime2”?

尝试设置系统范围的格式不起作用:

sql> SET DATEFORMAT 'mm/dd/yyyy'
[2019-03-31 09:42:04] [S0001][2741] SET DATEFORMAT date order 'mm/dd/yyyy' is invalid.

标签: sqlsql-serverdatetimesql-insert

解决方案


如果列的数据类型是date然后将字符串转换为date

convert(date, '03/31/2019', 101)

然后插入它。
请参阅演示
阅读更多关于convert()
编辑
创建一个 varchar 列和一个日期列。在 varchar 列中插入值,当过程完成时,通过将每个值转换为日期来更新日期列,例如:

UPDATE tablename
SET datecolumn = convert(date, varcharcolumn, 101) 

之后,您可以删除 varchar 列。


推荐阅读