2

我想'1392-04-31'使用此代码进行分配:

DECLARE @t DATETIME
SET @t = '92-04-31'

我看到这个错误:

Conversion failed when converting date and/or time from character string.

有谁知道为什么?

4

4 回答 4

2

解决方案是:使用 datetime2!

DECLARE @t datetime2
SET @t = '1392-04-30'

因为不能使用 datetime:datetime 中存储的最小日期是 1753 年 1 月 1 日。所以 1392 是不可存储的。

四月有30天。

使用带日期时间的格式化日期:

其次,当您在 Sql Server 中编写日期时,我更喜欢的格式是 {d 'YYYY-MM-DD'},因此在您的情况下变为:

DECLARE @t DATETIME
SET @t = {d '1992-04-30'}

要完成这个讨论,如果你想使用 hh mm ss 所以你必须使用这种格式:{ts 'yyy-mm-dd hh:mm:ss.mmm'}

DECLARE @t DATETIME
SET @t = {ts '1992-04-30 23:59:59.123'}
于 2013-07-22T19:42:29.347 回答
0

您尝试设置的日期可能无效。

还有几种方法可以将 SQL 中的日期表示为字符串,具体取决于语言、日期格式和其他设置。通常最安全的方法是使用“YYYYMMDD”格式。

下面的文章也会回答这个问题:为什么 1753 是 datetime 的最早日期?

如果您想了解一些详细信息,您应该阅读此内容:

http://karaszi.com/the-ultimate-guide-to-the-datetime-datatypes

于 2013-07-22T19:38:22.447 回答
0

试试这个 :

declare @t DATETIME
set @t = '1992-04-30 10:54:30'
于 2013-07-23T04:33:55.900 回答
-1

首先,四月只有30天。我不会花时间查看历史上是否是 1392 年的情况,但无论哪种方式,我都很确定 1392 年 4 月 31 日的日期对于 SQL Server DATETIME 是无效的。

此外,您应该使用格式为“01-01-2013”​​的全年。

尝试以下操作,您将获得输出 Jan 1 2013 12:00AM。

declare @t DATETIME
set @t = '01-01-2013'
PRINT @t

以上内容适用于任何有效日期。

于 2013-07-22T19:29:24.633 回答