|
59 | 59 | TrimFunc, |
60 | 60 | WhenClause, |
61 | 61 | JsonTableColumn, |
| 62 | + TimeInterval, |
62 | 63 | ) |
63 | 64 | from sqlgpt_parser.parser.tree.grouping import SimpleGroupBy |
64 | 65 | from sqlgpt_parser.parser.tree.join_criteria import JoinOn, JoinUsing, NaturalJoin |
|
72 | 73 | TimeLiteral, |
73 | 74 | DefaultLiteral, |
74 | 75 | ErrorLiteral, |
| 76 | + TimestampLiteral, |
75 | 77 | ) |
76 | 78 | from sqlgpt_parser.parser.tree.node import Node |
77 | 79 | from sqlgpt_parser.parser.tree.qualified_name import QualifiedName |
@@ -689,7 +691,12 @@ def p_date_lit(p): |
689 | 691 | r"""date_lit : DATE string_lit |
690 | 692 | | TIME string_lit |
691 | 693 | | TIMESTAMP string_lit""" |
692 | | - p[0] = DateLiteral(p.lineno(1), p.lexpos(1), value=p[2], unit=p[1]) |
| 694 | + if p.slice[1].type.upper() == "DATE": |
| 695 | + p[0] = DateLiteral(p.lineno(1), p.lexpos(1), value=p[2]) |
| 696 | + elif p.slice[1].type.upper() == "TIME": |
| 697 | + p[0] = TimeLiteral(p.lineno(1), p.lexpos(1), value=p[2]) |
| 698 | + elif p.slice[1].type.upper() == "TIMESTAMP": |
| 699 | + p[0] = TimestampLiteral(p.lineno(1), p.lexpos(1), value=p[2]) |
693 | 700 |
|
694 | 701 |
|
695 | 702 | def p_order(p): |
@@ -3437,7 +3444,7 @@ def p_time_interval(p): |
3437 | 3444 | r"""time_interval : INTERVAL expression time_unit |
3438 | 3445 | | QM""" |
3439 | 3446 | if len(p) == 4: |
3440 | | - p[0] = TimeLiteral(p.lineno(1), p.lexpos(1), value=p[2], unit=p[3]) |
| 3447 | + p[0] = TimeInterval(p.lineno(1), p.lexpos(1), value=p[2], unit=p[3]) |
3441 | 3448 | else: |
3442 | 3449 | p[0] = p[1] |
3443 | 3450 |
|
|
0 commit comments