@@ -883,6 +883,9 @@ fn custom_handlers(node: &Node) -> TokenStream {
883
883
} ,
884
884
"interval" => {
885
885
// Adapted from https://github.com/postgres/postgres/blob/REL_15_STABLE/src/backend/utils/adt/timestamp.c#L1103
886
+ const MONTH : i32 = 1 ;
887
+ const YEAR : i32 = 2 ;
888
+ const DAY : i32 = 3 ;
886
889
const HOUR : i32 = 10 ;
887
890
const MINUTE : i32 = 11 ;
888
891
const SECOND : i32 = 12 ;
@@ -894,10 +897,41 @@ fn custom_handlers(node: &Node) -> TokenStream {
894
897
895
898
if let Some ( fields) = fields {
896
899
match fields. clone( ) {
900
+ // YEAR TO MONTH
901
+ i if i == 1 << YEAR | 1 << MONTH => {
902
+ tokens. push( TokenProperty :: from( Token :: To ) ) ;
903
+ tokens. push( TokenProperty :: from( Token :: MonthP ) ) ;
904
+ } ,
905
+ // DAY TO HOUR
906
+ i if i == 1 << DAY | 1 << HOUR => {
907
+ tokens. push( TokenProperty :: from( Token :: To ) ) ;
908
+ tokens. push( TokenProperty :: from( Token :: HourP ) ) ;
909
+ } ,
910
+ // DAY TO MINUTE
911
+ i if i == 1 << DAY | 1 << HOUR | 1 << MINUTE => {
912
+ tokens. push( TokenProperty :: from( Token :: To ) ) ;
913
+ tokens. push( TokenProperty :: from( Token :: MinuteP ) ) ;
914
+ } ,
915
+ // DAY TO SECOND
916
+ i if i == 1 << DAY | 1 << HOUR | 1 << MINUTE | 1 << SECOND => {
917
+ tokens. push( TokenProperty :: from( Token :: To ) ) ;
918
+ tokens. push( TokenProperty :: from( Token :: SecondP ) ) ;
919
+ } ,
920
+ // HOUR TO MINUTE
921
+ i if i == 1 << HOUR | 1 << MINUTE => {
922
+ tokens. push( TokenProperty :: from( Token :: To ) ) ;
923
+ tokens. push( TokenProperty :: from( Token :: MinuteP ) ) ;
924
+ } ,
925
+ // HOUR TO SECOND
897
926
i if i == 1 << HOUR | 1 << MINUTE | 1 << SECOND => {
898
927
tokens. push( TokenProperty :: from( Token :: To ) ) ;
899
928
tokens. push( TokenProperty :: from( Token :: SecondP ) ) ;
900
929
} ,
930
+ // MINUTE TO SECOND
931
+ i if i == 1 << MINUTE | 1 << SECOND => {
932
+ tokens. push( TokenProperty :: from( Token :: To ) ) ;
933
+ tokens. push( TokenProperty :: from( Token :: SecondP ) ) ;
934
+ } ,
901
935
_ => panic!( "Unknown Interval fields {:#?}" , fields) ,
902
936
}
903
937
}
0 commit comments