Bonjour à tous,
J'ai besion de faire des "stress" test sur ma base de données
Pour ce faire, j'ai conçu un programme en C# qui injecte une ligne à chaque 5 minutes et ce durant un période de 4 ans. Dison entre 2006 et 2010.
Voici à quoi ressemble ma table. Elle contient deux champs, soit le premier étant une date et l'autre la valeur. La clé primaire est basé sur la date.
Toutefois, j'aimerais convertir ce champs en type INT et stocker la date à l'aide de UNIX_TIMESTAMP parce que j'ai beaucoup d'opération de temps à faire.
Bref, avec le champs DATETIME, les 4 ans de données s'insert à merveille avec le simulatuer en C#.
Voici un exemple de requête d'injection :
Maintenant, lorsque j'essais de faire la même chose mais avec un champs INT (clé primaire), j'obtiens un tas d'erreur à cause de doublons !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INSERT INTO myTable (sv_Date, sv_Value) VALUE ('2006-01-01 00:00:00', 10.0), VALUE ('2006-01-01 00:05:00', 80.0)
Exemple de requête d'injection :
Donc en résumé, lorque le champs date est au format DATETIME, tout se déroule normalement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INSERT INTO myTable (sv_Date, sv_Value) VALUE (UNIXTIME_STAMP ('2006-12-03 00:00:00'), 10.0) VALUE (UNIXTIME_STAMP ('2006-12-03 00:05:00'), 80.0)
Quand le champs est au format INT et remplie avec UNIX_TIMESTAMP, c'est le bordel ? Je ne comprend pas du tout !
J'ai donc décidé d'ajouter un champs supplémentair à ma table question de faire des tests. J'ai ajouter le champs "sv_RealDate" de type DATETIME.
À présent, le programme C# ajecte de la façon suivante :
Maintenant, voici un exemple de quelques lignes bizarre que j'ai vue dans ma table lorsque je cherchais pour les fameux doublons :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INSERT INTO myTable (sv_Date, sv_Value, sv_RealDate) VALUE (UNIXTIME_STAMP ('2006-12-03 00:00:00'), 10.0, '2006-12-03 00:00:00') VALUE (UNIXTIME_STAMP ('2006-12-03 00:05:00'), 80.0, '2006-12-03 00:05:00')
La colonne "sv_RealDateTimeToUnixTime" devrait avoir la même valeur que sv_RealDate, eh bien NON ! C'est là que je ne comprend rien à rien. Est-ce que UNIX_TIMESTAMP est buggé ou j'ai manqué une page quelque part ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT sv_Date, sv_Value, sv_RealDate, FROM_UNIXTIME(sv_Date) FROM SensorsValues WHERE sv_Date = UNIX_TIMESTAMP('2006-03-12 02:00:00') sv_Date sv_Value sv_RealDate sv_RealDateToUnixTime 1142146800, -92.35, '2006-03-12 02:00:00', '2006-03-12 03:00:00' 1142146800, -76.58, '2006-03-12 02:05:00', '2006-03-12 03:00:00' 1142146800, -86.05, '2006-03-12 02:10:00', '2006-03-12 03:00:00' 1142146800, 17.91, '2006-03-12 02:15:00', '2006-03-12 03:00:00'
Si j'aurais une chance à prendre, je dirais que ça certainnement un rapport avec le DST et la timezone.
Si c'est le cas, alors est-il possible de simplement insérer et récupérer une date sans me soucier du DST ou du timezone. Bref, le même comportement qu'un champs DATETIME ?
Merci pour votre aide.
Partager