Hay una función en la Colmena se podría utilizar para agregar minutos(int) a un tipo datetime similar a DATEADD (datepart,number,date)en sql server donde se datepart puede ser minutes:
DATEADD(minute,2,'2014-07-06 01:28:02') devuelve 2014-07-06 01:28:02
Por otro lado, la Colmena de la date_add(string startdate, int days) es en days. Cualquiera de tales para hours?

OriginalEl autor DevEx | 2015-05-22

2 Comentarios

  1. 3

    su problema se puede resolver fácilmente por HiveUdf.

    package HiveUDF;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.apache.hadoop.hive.ql.exec.UDF;
    
    public class addMinuteUdf extends UDF{
        final long ONE_MINUTE_IN_MILLIS=60000;
        private  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        public String evaluate(String t, int minute) throws ParseException{
            long time=formatter.parse(t.toString()).getTime();
            Date AddingMins=new Date(time + (minute * ONE_MINUTE_IN_MILLIS));
            String date = formatter.format(AddingMins);
            return date;
        }
    }
    

    Después de la creación de AddMinuteUdf.jar , registrarlo en la Colmena;

    ADD JAR /home/Kishore/AddMinuteUdf.jar; 
    create temporary FUNCTION addMinute as 'HiveUDF.addMinuteUdf';
    
    
    hive> select date from ATable;
    OK
    2014-07-06 01:28:02
    Time taken: 0.108 seconds, Fetched: 1 row(s)
    

    Después de aplicar la función

    hive> select addMinuteUdf(date, 2) from ATable;     
    OK
    2014-07-06 01:30:02
    Time taken: 0.094 seconds, Fetched: 1 row(s)
    

    OriginalEl autor Kishore

  2. 12

    Lugar de utilizar UDF, usted puede agregar segundos a datetime, convertida a unix_timestamp() y, a continuación, convertir el resultado del datetime.

    Ejemplo:

    select from_unixtime(unix_timestamp('2015-12-12 16:15:17')+3600);
    

    Aquí hemos añadido una hora:

    hive> select from_unixtime(unix_timestamp('2015-11-12 12:15:17')+${seconds_in_hour});
    OK
    2015-11-12 13:15:17
    Time taken: 0.121 seconds, Fetched: 1 row(s)
    

    Así, en el caso de minutos, además se deberá agregar el número de minutos*60.

    Solución agradable. Gracias, Sergey!
    El uso de este perderá milisecond información de marca de tiempo. mejor ir con UDF enfoque basado en

    OriginalEl autor Sergey Sidorov

Dejar respuesta

Please enter your comment!
Please enter your name here