Sql server 未将日期插入到定义格式的表中

Sql server 未将日期插入到定义格式的表中,sql-server,sql-server-2012-datatools,Sql Server,Sql Server 2012 Datatools,我将一些数据插入到不同SQL server上的表中,为此我创建了一个dtsx包, 我们需要dd-mm-yyyy格式的目标表中的数据,我正在使用下面的查询将日期转换为所需的格式 Convert(varchar,dbo.Member.DateOfBirth,105) 当在SSMS中运行查询时,它将提供完全转换的数据,如“25-08-1989” 但当我在插入后在目的地表中检查它时,它显示的日期为“1989-08-25” 有人能告诉我为什么目标表在转换后不接受dd mm yyyy格式的日期吗? 我是

我将一些数据插入到不同SQL server上的表中,为此我创建了一个dtsx包, 我们需要dd-mm-yyyy格式的目标表中的数据,我正在使用下面的查询将日期转换为所需的格式

Convert(varchar,dbo.Member.DateOfBirth,105)
当在SSMS中运行查询时,它将提供完全转换的数据,如“25-08-1989” 但当我在插入后在目的地表中检查它时,它显示的日期为“1989-08-25”
有人能告诉我为什么目标表在转换后不接受dd mm yyyy格式的日期吗?

我是新来的,很抱歉格式化错误….

您可能混淆了客户端将日期格式化为某些(不存在的)服务器日期格式的方式。没有。所有日期类型都是二进制值,就像int、float和decimal一样。客户端将它们格式化为字符串以显示它们

SSMS只不过是一个专门的客户机。默认情况下,日期根据您(用户)的区域设置进行格式化。当同一日期对一个用户显示为2017年9月25日,而对另一个用户显示为2017年9月25日时,这可能会导致混淆。但是日期还是一样的


DBA和开发人员并不关心本地化格式。SSMS使用
YYYY-MM-DD
以避免混淆。

您不在数据库中以特定格式存储日期(请不要使用varchar字段)。您将它们存储在正确的数据类型(日期、日期时间2等)中,并在前端进行格式化。@表示存储时格式化不起作用,在使用时必须转换???是的,数据以二进制格式存储,不包含任何格式。如果您使用的是正确的数据类型(date、datetime2、datetime或time),则需要在其他地方执行此操作,您根本不需要担心字符串格式。要将日期值表示为strng,请始终使用
yyyy-mm-dd
(以及时间
yyy-mm-ddThh:mm:ss.nnn
)以避免ambiguity@ZoharPeled规则是只有未分离的格式对于日期是明确的,ISO8601对于日期时间是明确的。