Comment ajouter/soustraire date/heure de composants à l'aide d'un calcul de l'intervalle?
J'aimerais obtenir que cela fonctionne dans Teradata:
SQL mise à jour pour un meilleur exemple
select
case
when
current_date between
cast('03-10-2013' as date format 'mm-dd-yyyy') and
cast('11-03-2013' as date format 'mm-dd-yyyy')
then 4
else 5
end Offset,
(current_timestamp + interval Offset hour) GMT
Cependant, j'obtiens une erreur de Expected something like a string or a Unicode character blah blah
. Il semble que vous avez à coder en dur l'intervalle comme ceci:
select current_timestamp + interval '4' day
Oui, je sais que j'ai codé en dur dans mon premier exemple, mais ce n'était que pour démontrer un résultat calculé.
Si vous le savez, je suis d'avoir à convertir toutes les dates et les heures dans une quelques tables à l'heure GMT, mais je compte à l'heure d'été. Je suis dans l'est, donc j'ai besoin d'ajouter 4 heures si la date est à l'intérieur de la période de l'heure d'été et ajouter 5 heures dans les autres cas.
Je sais que je peux juste créer des instructions update, pour chaque période et il suffit de changer la valeur de 4 à 5 en conséquence, mais je veux que ma requête soit dynamique et intelligent.
OriginalL'auteur oscilatingcretin | 2013-06-13
Vous devez vous connecter pour publier un commentaire.
Voici la solution:
Vous avez fait coulé le cas de la déclaration de valeur de retour comme un intervalle. Je ne savais même pas que l'intervalle de types existaient dans Teradata. Grâce à cette page pour m'aider:
http://www.teradataforum.com/l081007a.htm
OriginalL'auteur oscilatingcretin
Si je comprends bien, vous voulez multiplier l'intervalle par certains nombre. Le croire ou pas, c'est littéralement tout ce que vous devez faire:
Intervalles ont toujours contesté me pour une raison quelconque; je ne les utilise pas très souvent. Mais j'ai eu ce petit exemple dans mon Teradata "cheat sheet" pour un bon moment.
Je ne veux pas coder en dur la valeur de l'intervalle comme je l'ai mentionné dans ma question. J'ai mis à jour ma question avec un meilleur exemple SQL. Voyez si vous pouvez l'obtenir pour fonctionner.
Ahhhhaa! J'ai pensé à elle. Affichera comme réponse.
OriginalL'auteur BellevueBob
Deux remarques:
La méthode recommandée pour écrire un littéral date de Teradata est la DATE AAAA-MM-JJ' au lieu de CAST/FORMAT
OriginalL'auteur dnoeth