Lors de la boucle dans SQL Server 2008 itérer sur une date, puis INSÉREZ

J'ai une table avec un peu de colonnes, dont l'une est une colonne de type Timestamp. Mais à l'heure actuelle dans ce tableau n'est pas un enregistrement pour chaque jour. Sens, il y a des dossiers pour le 1er janvier et le 2 janvier, mais pas de dossiers avec 3 janvier ou le 4 janvier dans le champ d'Horodatage. Cependant, il existe des enregistrements continue pour le 5 janvier et le 6 janvier, et ainsi de suite. Fondamentalement, les week-ends et les autres aléatoire jours sont manquants.

Je suis en train d'écrire un script qui analyse cette table à partir de la date de début à la date de fin (quelle que soit la plage de dates-je choisir), et itérer sur cette date, et si un enregistrement n'existe pas avec les dates de cette date, insérer un nouvel enregistrement de la date dans le champ Timestamp, mais vide/NULL données pour le reste de la les champs.

Voici le pseudo-code que j'ai obtenu jusqu'à présent, et je pense que cette approche est la bonne:

DECLARE @StartDate AS DATETIME
DECLARE @EndDate AS DATETIME
DECLARE @CurrentDate AS DATETIME

SET @StartDate = '2015-01-01'
SET @EndDate = GETDATE()
SET @CurrentDate = @StartDate

WHILE (@CurrentDate < @EndDate)
BEGIN
    SELECT * FROM myTable WHERE myTable.Timestamp = "@CurrentDate"
    IF @@ROWCOUNT < 1
        print @CurrentDate
        /*insert a new row query here*/

    SET @CurrentDate = convert(varchar(30), dateadd(day,1, @CurrentDate), 101); /*increment current date*/
END

Voici la SQLFiddle - http://sqlfiddle.com/#!6/06c73/1

Je suis en train d'écrire mon premier script dans SQL Server Management Studio 2008 et j'ai quelque chose que je pense que peut être pour un utilisateur intermédiaire. Je suis un PHP/MySQL développeur, et je suis très familier avec ces technologies, mais je suis nouvelle marque de SQL et VBScript. Je comprends les concepts de la programmation et de la logique, mais c'est bien autre chose que ce à quoi je suis habitué.

J'apprécie beaucoup tous de l'aide et la compréhension de l'avance!

OriginalL'auteur Armin | 2015-03-18