L'insertion datetime dans MSSQL à partir de Coldfusion
Je suis en train d'insérer NOW
dans une table MySQL. Quelque chose comme:
<cfset datatime = CREATEODBCDATETIME( Now() ) />
<cfquery name="qInsert" datasource="#dbanme#" >
INSERT INTO TableName(....,date_created, date_modified)
VALUES(...,'#datatime#', '#datatime#')
</cfquery>
Mais j'obtiens l'erreur suivante:
Invalide JDBC timestamp échapper
Toute aide?
- Non pas que cela importe vraiment, mais est-ce un MSSQL ou d'une table MySQL? Vous liste un dans la question et l'autre dans le titre. Ce genre de questions que vous pouvez utiliser MySQL
Now()
fonction ou MSSQL dugetDate()
fonction pour obtenir la date/heure actuelle, aucune raison d'avoir CF le faire. createODBCDateTime
retourne un objet datetime. DateTime des objets ne doit pas être cité. c'est ce Qui est la cause de votre erreur de syntaxe. Cela dit, comme d'autres ont suggéré que vous devriez vraiment être à l'aide de cfqueryparam sur toutes les valeurs de paramètres de variable.
Vous devez vous connecter pour publier un commentaire.
Laisser ColdFusion écrire les données pour vous - à l'aide de
cfqueryparam
. Il n'est pas absolument indispensable, mais c'est une bonne pratique à utiliser quand vous le pouvez. En plus de vous protéger contre l'injection SQL, c'formats de vos variables de manière appropriée de sorte que vous n'avez pas à vous soucier de savoir si ou non vous avez besoin d'insérer les valeurs comme des chaînes ou des nombres entiers ou quoi que ce soit.cf_sql_timestamp
? Parce que l'utilisation decf_sql_date
va supprimer tout le temps partie et insérer une date.date_xx
oudatetime_xx
de façon appropriéeSi vous souhaitez que la date, sans le temps, utilisez la commande suivante:
cf_sql_date
va supprimer tout le temps, et en fonction de votre type de champ afficher uniquement la date ou la date avec00:00:00
que la valeur de temps.Si vous voulez une date avec le temps:
Si vous souhaitez utiliser le construit en fonction MAINTENANT, il suffit d'inclure dans le cadre de la requête:
Vous n'avez pas besoin de guillemets autour de l'généré ColdFusion horodateurs lors de l'insertion dans SQL Server.
D'élaborer, si vous construisez votre timestamp comme une chaîne de caractères, à l'aide de DateFormat et autres joyeusetés, vous devez insérer dans l'utilisation de ce format:
ColdFusion ODBCx fonctions pour les dates faire tout ce travail pour vous, il est donc juste: