【发布时间】:2020-07-07 15:06:46
【问题描述】:
我试图简单地将昨天的日期(以 23 格式)转换为字符串。我不断收到错误“将字符串转换为 smalldatetime 数据类型时转换失败。”
有什么想法吗?
DECLARE @yesterday CHAR;
SET @yesterday = convert(varchar,getdate()-1,23);
【问题讨论】:
标签: sql-server datetime
我试图简单地将昨天的日期(以 23 格式)转换为字符串。我不断收到错误“将字符串转换为 smalldatetime 数据类型时转换失败。”
有什么想法吗?
DECLARE @yesterday CHAR;
SET @yesterday = convert(varchar,getdate()-1,23);
【问题讨论】:
标签: sql-server datetime
这应该可行:
DECLARE @yesterday varchar(100)
SET @yesterday = CONVERT(varchar(100),DATEADD(day,-1,getdate()),23)
SELECT @yesterday
【讨论】:
char 等价于char(1)。因此,在您的 set 语句之后,@yesterday 变量将具有值 '2' - 格式化日期时间的第一个字符。您必须尝试将其放入smalldatetime,这当然会失败,因为'2' 不是有效的smalldatetime。您应该使用 char(10) 作为日期格式 23。
【讨论】: