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