Sql server 将CDate插入SQL Server 2012翻转日期和月份

Sql server 将CDate插入SQL Server 2012翻转日期和月份,sql-server,vb.net,date,datetime,date-format,Sql Server,Vb.net,Date,Datetime,Date Format,我在将日期从VB.net程序插入SqlServer2012实例时遇到问题 首先是如何生成数据(Vb.net) ExitTime=CDate(“1.1.1970 00:00:00”).AddSeconds(currentField)。ToLocalTime 我们将此值添加到存储过程(Vb.net) 带有comsql5.Parameters.AddWithValue(“@ExitTime”,ExitTime)的 在Sql Server存储过程中 @ExitTime datetime,[…] [.

我在将日期从VB.net程序插入SqlServer2012实例时遇到问题

首先是如何生成数据(Vb.net)

ExitTime=CDate(“1.1.1970 00:00:00”).AddSeconds(currentField)。ToLocalTime
我们将此值添加到存储过程(Vb.net)

带有comsql5.Parameters.AddWithValue(“@ExitTime”,ExitTime)的

在Sql Server存储过程中

@ExitTime datetime,[…]
[...]
插入[表]([ExitTime])值(@ExitTime)
下面是vb.net中退出时间的输出 退出时间:2014年7月8日下午2:06:31

这是Sql server数据库中的同一行 2014-08-07 14:06:31.000

我想在数据库中看到的是2014-07-08 14:06:31.00 因为程序中的另一部分对字段进行检查,但作为字符串。。。它不匹配,因为它翻转了月份和日期

编辑:为了清楚起见,我不能更改作为字符串进行比较的其他部分。我知道这是比较
datetime
的糟糕方法


感谢您抽出时间

您是否尝试过使用转换功能

SELECT CONVERT (VARCHAR, getdate(), 121);

有关详细信息,请查看此链接,

因此datetime值为sql,这正是您发送的值,对吗?将日期时间作为字符串检查的另一段代码的问题不在于sql server。请记住,您“看到”的并不是存储在sql server中的内容。比较日期时间值的最佳方法是使用日期时间值,而不是字符串表示形式。请在“程序的另一部分”中更改代码,使其不尝试作为字符串进行比较,而是作为日期时间值进行比较,这样就不会有任何问题。您试图使用表示值(用户看到的)而不是数据值(数据的存储方式),这是错误的。如果您无法更改编写不正确的代码,您就无能为力。您希望更改sql server引擎的工作方式,因为某些恶意代码是由其他人编写的(我猜可能是某个供应商)。也许您可以使用计算列来提供帮助,但这实际上是在处理症状,而不是问题。我感觉到了你的痛苦,我自己也经历过。你在调试程序中检查ExitTime的值吗?如果是这样,我怀疑它显示的是美国格式的日期,因此2014年8月7日是8月7日,这正是您在数据库中看到的。我现在可以给您答案。如果您想查看特定格式的日期,则需要设置该格式。日期如何存储在SQLServer中并不重要。尝试以下操作:
System.Threading.Thread.CurrentThread.CurrentCulture=new CultureInfo(“fr fr”)dim s为string=DateTime.Now.ToString()