@@ -614,6 +614,37 @@ public void hour() {
614614 assertEquals ("hour(\" 2020-08-17 01:02:03\" )" , expression .toString ());
615615 }
616616
617+ private void testInvalidMinuteOfDay (String date ) {
618+ FunctionExpression expression = DSL .minute_of_day (DSL .literal (new ExprDateValue (date )));
619+ eval (expression );
620+ }
621+
622+ @ Test
623+ public void invalidMinuteOfDay () {
624+ lenient ().when (nullRef .valueOf (env )).thenReturn (nullValue ());
625+ lenient ().when (missingRef .valueOf (env )).thenReturn (missingValue ());
626+
627+ assertThrows (SemanticCheckException .class ,
628+ () -> testInvalidMinuteOfDay ("2022-12-14 12:23:3400" ));
629+ assertThrows (SemanticCheckException .class ,
630+ () -> testInvalidMinuteOfDay ("2022-12-14 12:2300:34" ));
631+ assertThrows (SemanticCheckException .class ,
632+ () -> testInvalidMinuteOfDay ("2022-12-14 1200:23:34" ));
633+ assertThrows (SemanticCheckException .class ,
634+ () -> testInvalidMinuteOfDay ("2022-12-1400 12:23:34" ));
635+ assertThrows (SemanticCheckException .class ,
636+ () -> testInvalidMinuteOfDay ("2022-1200-14 12:23:34" ));
637+ assertThrows (SemanticCheckException .class ,
638+ () -> testInvalidMinuteOfDay ("12:23:3400" ));
639+ assertThrows (SemanticCheckException .class ,
640+ () -> testInvalidMinuteOfDay ("12:2300:34" ));
641+ assertThrows (SemanticCheckException .class ,
642+ () -> testInvalidMinuteOfDay ("1200:23:34" ));
643+ assertThrows (SemanticCheckException .class ,
644+ () -> testInvalidMinuteOfDay ("asdfasdfasdf" ));
645+
646+ }
647+
617648 @ Test
618649 public void microsecond () {
619650 when (nullRef .type ()).thenReturn (TIME );
@@ -691,6 +722,48 @@ public void minute() {
691722 assertEquals ("minute(\" 2020-08-17 01:02:03\" )" , expression .toString ());
692723 }
693724
725+ private void testMinuteOfDay (String date , int value ) {
726+ FunctionExpression expression = DSL .minute_of_day (DSL .literal (new ExprTimeValue (date )));
727+ assertEquals (INTEGER , expression .type ());
728+ assertEquals (integerValue (value ), eval (expression ));
729+ }
730+
731+ @ Test
732+ public void minuteOfDay () {
733+ when (nullRef .type ()).thenReturn (TIME );
734+ when (missingRef .type ()).thenReturn (TIME );
735+ assertEquals (nullValue (), eval (DSL .minute_of_day (nullRef )));
736+ assertEquals (missingValue (), eval (DSL .minute_of_day (missingRef )));
737+
738+ FunctionExpression expression = DSL .minute_of_day (DSL .literal (new ExprTimeValue ("01:02:03" )));
739+ assertEquals (INTEGER , expression .type ());
740+ assertEquals (integerValue (62 ), eval (expression ));
741+ assertEquals ("minute_of_day(TIME '01:02:03')" , expression .toString ());
742+
743+ expression = DSL .minute_of_day (DSL .literal ("01:02:03" ));
744+ assertEquals (INTEGER , expression .type ());
745+ assertEquals (integerValue (62 ), eval (expression ));
746+ assertEquals ("minute_of_day(\" 01:02:03\" )" , expression .toString ());
747+
748+ expression = DSL .minute_of_day (DSL .literal (new ExprTimestampValue ("2020-08-17 01:02:03" )));
749+ assertEquals (INTEGER , expression .type ());
750+ assertEquals (integerValue (62 ), expression .valueOf (env ));
751+ assertEquals ("minute_of_day(TIMESTAMP '2020-08-17 01:02:03')" , expression .toString ());
752+
753+ expression = DSL .minute_of_day (DSL .literal (new ExprDatetimeValue ("2020-08-17 01:02:03" )));
754+ assertEquals (INTEGER , expression .type ());
755+ assertEquals (integerValue (62 ), expression .valueOf (env ));
756+ assertEquals ("minute_of_day(DATETIME '2020-08-17 01:02:03')" , expression .toString ());
757+
758+ expression = DSL .minute_of_day (DSL .literal ("2020-08-17 01:02:03" ));
759+ assertEquals (INTEGER , expression .type ());
760+ assertEquals (integerValue (62 ), expression .valueOf (env ));
761+ assertEquals ("minute_of_day(\" 2020-08-17 01:02:03\" )" , expression .toString ());
762+
763+ testMinuteOfDay ("2020-08-17 23:59:59" , 1439 );
764+ testMinuteOfDay ("2020-08-17 00:00:01" , 0 );
765+ }
766+
694767 @ Test
695768 public void month () {
696769 when (nullRef .type ()).thenReturn (DATE );
0 commit comments