【发布时间】:2015-04-11 12:52:28
【问题描述】:
我使用 Classic ASP 和 SQL Server 2012。我有一个使用 now() 输入数据库的程序。原来是formnatdatetime(now(),2)。
在大多数情况下,一切都很好,但由于某种原因(这就是我要问的原因),有时它会将数据库中的日期格式错误。所以不是ddmmyyyy,而是mmddyyyy。
我看不出当代码相同时,数据库如何或为什么相同。我假设 TSQL 中的 now() 或 getdate() 是特定于服务器的。
【问题讨论】:
-
不要使用字符串在数据库中存储日期/时间值。使用本机日期/时间格式。
GETDATE()不是“特定于服务器的”。它返回一个datetime值。 -
@GordonLinoff 您忽略了输入格式是问题所在,因为 SQL Server 在转换为
DATETIME时必须做出最佳猜测。避免这种情况的简单方法是使用dd-mmm-yyyy意味着 SQL Server 不会混淆日期和月份。 OP 在任何时候都没有建议他们将日期作为VARCHAR存储在数据库中,这是您的假设。 -
@Lankymart 。 . .如果需要当前时间,OP 可以在数据库中使用
getdate()。无需中间结果或最终结果即可使用字符串。 -
@GordonLinoff 这确实是解决它的一种方法(对于当前日期时间),但根本问题是将
Now()的输出转换为DATETIME和Maciej 不要碰。
标签: sql date asp-classic sql-server-2012