MYSQL comment déclarer une variable datetime?
Mon code:
DECLARE report_date DATETIME;
set report_date='2013-01-17 00:00:00';
SELECT *
FROM `NMPP`.`capacitypersecond`
WHERE `StreamDT` >=report_date and `StreamDT` < '2013-01-18 00:00:00' ;
SELECT *
FROM `NMPP`.`capacityperHr`
WHERE `StreamDT` >=report_date and `StreamDT` < '2013-01-18 00:00:00' ;
SELECT *
FROM `NMPP`.`capacityperDay`
WHERE `TJLDate` >=report_date and `TJLDate` < '2013-01-18 00:00:00' ;
-
DECLARE report_date DATETIME;
/* SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE report_date DATETIME' at line 1 */
/* Affected rows: 0 Found rows: 0 Warnings: 0 Duration for 0 of 5 queries: 0.000 sec. */
Est-ce à l'intérieur d'un
Pourriez-vous fournir plus d'informations? Quelle est la version de MySQL utilisez-vous, êtes-vous une déclaration à l'intérieur d'une procédure stockée, etc.?
pas de début/fin, puis comment la déclarer dans un fichier sql?
Ensuite vous pouvez définir comme
BEGIN
/END
déclaration? Parce que c'est le seul endroit où DECLARE
est légal.Pourriez-vous fournir plus d'informations? Quelle est la version de MySQL utilisez-vous, êtes-vous une déclaration à l'intérieur d'une procédure stockée, etc.?
pas de début/fin, puis comment la déclarer dans un fichier sql?
Ensuite vous pouvez définir comme
set @report_date:='2013-01-17 00:00:00';
ensuite l'utiliser dans la requête comme @report_date
OriginalL'auteur Scott 混合理论 | 2013-01-18
Vous devez vous connecter pour publier un commentaire.
se débarrasser de
declare
:Oui et reportez-vous à votre variable avec @ comme
@report_date
dans la requête-1. Oui pourquoi devrions-nous nous débarrasser de DÉCLARER ? la façon dont vous avez résolu c'est par l'utilisation de variables définies par l'utilisateur ignorant la bonne façon de déclarer une variable de type DATETIME.
parce que l'op dit que le code n'est pas à l'intérieur de début/fin de bloc dans les commentaires.
Merci pour le commentaire. Si oui, alors la bonne réponse est de définir un début/fin de bloc pour envelopper l'instruction DECLARE. Le problème avec les variables définies par l'utilisateur, c'est qu'ils sont faiblement typés et de rester hors de la portée d'une procédure stockée.
OriginalL'auteur palindrom
ou avec cast:
@report_date
dans la requêteOriginalL'auteur spacepille
Tous les DÉCLARER au début de la détente,de la procédure stockée.
Ce n'est pas une C++ comme langage où vous pouvez mélanger des déclarations et des, mais plus comme C, où toutes les déclarations doivent être faites avant que toutes les déclarations.
OriginalL'auteur Pazhani Samy