sql-server - SQL : Can't insert a date loop into a column

标签 sql-server

我有一张这样的 table :

id: PK bigint
RatePercent: decimal(4, 4)
DateRange: date

我正在尝试按如下方式填充表格:

  • RatePercentage 全部为 0.12
  • 日期从“01-01-2015”到“12-31-2099”

不幸的是,我的查询不会那样做,并且一直说

Operand type clash: date is incompatible with int

除了 id bigint 之外,我还没有分配 int 数据类型。我有点困惑。

这是我目前的查询:

DECLARE @Date Date
SET @Date = '01-01-2015'

WHILE @Date <= '12-31-2099'
BEGIN
    INSERT INTO [dbo].[IMF_Main_VATHistory] (VATRate, VATDate)
    VALUES (0.12, @Date + 1);
END

最佳答案

试试这个:

DECLARE @Date Date
SET @Date = '01-01-2015'

WHILE @Date <= '12-31-2099'
BEGIN
    INSERT INTO [dbo].[IMF_Main_VATHistory] (VATRate, VATDate)
    VALUES (0.12, DATEADD(DAY, 1, @Date));

    SET @Date = DATEADD(DAY, 1, @Date);
END

您不能在 SQL Server 中直接添加 DATE 数据类型(作为引用,我认为您可以在 Oracle 中)。您必须使用函数来修改 DATE/DATETIME 变量(或列)。

这是一个示例 SQLFiddle .

关于sql-server - SQL : Can't insert a date loop into a column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31581228/

相关文章:

c# - 使用 Entity Framework 自动递增主键

SQL 查询问题

c# - 设计模式/想法根据触发器将执行的操作刷新网格中的行

sql - 将分号分隔的值替换为另一个表值

sql - 备份数据库而不将其设置为只读

sql-server - R:使用 ODBC 和 SQL Server 读取性能非常慢

c# - 如何使用 Entity Framework 处理可选表?

sql - 删除重复记录 SQL Server

sql-server - 为什么没有数据插入时会调用插入触发器?

sql - 来自 SQL Server 源的 Excel 下拉值