1

次の 180 日ごとに 1 つずつ、多数のレコードを挿入しようとしています (各レコードは日付を除いて同じです)。私は最善のアプローチが何であるか100%ではありませんが、次のことを試みました:

insert into [table]
select 12, DateAdd(d, row_number() - 1, GETDATE()), 0, NULL, NULL, NULL, 2
where row_number() < 180

もちろん、これは私が を使用していないと不平を言っていOVERますが、このコンテキストにどのように適合するかはわかりません。おそらく、私はこの問題をより高いレベルで間違った方法で考えています。

これを行うための最良のアプローチに関するアイデアはありますか?

問題の SQL Server の種類は MSSQL です。

4

2 に答える 2

3

数表!

INSERT INTO your_table (list, of, fields, ..., date_field )
SELECT list
     , of
     , fields
     , ...
     , DateAdd(dd, number, Current_Timetstamp)
FROM   dbo.numbers
WHERE  number BETWEEN 1 AND 180

時間部分のない日付が必要ないと仮定します(つまりyyyy-mm-dd 00:00:00.000

SELECT DateAdd(dd, DateDiff(dd, 0, Current_Timestamp), 0) As date_with_time_truncated

Current_Timestamp最初のクエリの を上記と交換するだけです!

于 2013-09-14T19:53:45.723 に答える