我想'1392-04-31'
使用此代码进行分配:
DECLARE @t DATETIME
SET @t = '92-04-31'
我看到这个错误:
Conversion failed when converting date and/or time from character string.
有谁知道为什么?
我想'1392-04-31'
使用此代码进行分配:
DECLARE @t DATETIME
SET @t = '92-04-31'
我看到这个错误:
Conversion failed when converting date and/or time from character string.
有谁知道为什么?
解决方案是:使用 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'}
您尝试设置的日期可能无效。
还有几种方法可以将 SQL 中的日期表示为字符串,具体取决于语言、日期格式和其他设置。通常最安全的方法是使用“YYYYMMDD”格式。
下面的文章也会回答这个问题:为什么 1753 是 datetime 的最早日期?
如果您想了解一些详细信息,您应该阅读此内容:
http://karaszi.com/the-ultimate-guide-to-the-datetime-datatypes
试试这个 :
declare @t DATETIME
set @t = '1992-04-30 10:54:30'
首先,四月只有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
以上内容适用于任何有效日期。