首页 > 解决方案 > 尝试将 SQL 查询的值分配给变量 SET

问题描述

我正在尝试以 yyyymm 格式获取日期,然后在某些操作中使用该日期。

declare @currdate datetime
set @currdate = (SELECT CONVERT(nvarchar(6), GETDATE(), 112))

错误:

将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。

或者如果我在下面使用:

declare @currdate datetime
set @currdate = SELECT FORMAT(GetDate(),'yyyyMM')

我得到与上面相同的错误。

所以我想如果今天的日期是 17-05-2020,我想 202005 作为输出,我想将该输出存储在某个变量中。

标签: sqlsql-server

解决方案


您已将 var 声明为日期

或者你声明一个 varchar

    declare @currdate nvarchar(6)
    set @currdate = (SELECT CONVERT(nvarchar(6), GETDATE(), 112))

或@MartinSmith 明确指出

它是字符(6)。它既不是可变长度,也不需要 ASCII 数字之外的任何字符

    declare @currdate char(6)
    set @currdate = (SELECT CONVERT(nvarchar(6), GETDATE(), 112))

或者你用作日期

declare @currdate datetime
set @currdate GETDATE(),

推荐阅读