connector-plugin-sdk icon indicating copy to clipboard operation
connector-plugin-sdk copied to clipboard

Overloaded date functions cannot be routed to the corresponding function logic as expected

Open catpineapple opened this issue 9 months ago • 0 comments

About You: Name: Dechao Hu Company: Apache Doris

Your question:

As shown below, I implemented DATETRUNC in the dialect file to receive the start_of_week input:

        <date-function name='DATETRUNC' return-type='datetime'>
            <formula part='year'>ADDDATE( DATE_FORMAT( %2, '%Y-01-01 00:00:00' ), INTERVAL 0 SECOND )</formula>
            <formula part='quarter'>ADDDATE( CONCAT( DATE_FORMAT( %2, '%Y-' ), (3*(QUARTER(%2)-1)+1), '-01 00:00:00' ), INTERVAL 0 SECOND )</formula>
            <formula part='month'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-01 00:00:00' ), INTERVAL 0 SECOND )</formula>
            <formula part='dayofyear'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d 00:00:00' ), INTERVAL 0 SECOND )</formula>
            <formula part='day'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d 00:00:00' ), INTERVAL 0 SECOND )</formula>
            <formula part='weekday'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d 00:00:00' ), INTERVAL 0 SECOND )</formula>
            <formula part='week'>aDDDATE(DATE_FORMAT( %2, '%Y-%m-%d 00:00:00' ), INTERVAL (-DAYOFWEEK(%2) + 1) DAY)</formula>
            <formula part='hour'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d %H:00:00' ), INTERVAL 0 SECOND )</formula>
            <formula part='minute'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d %H:%i:00' ), INTERVAL 0 SECOND )</formula>
            <formula part='second'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d %H:%i:%s' ), INTERVAL 0 SECOND )</formula>
            <argument type='localstr' />
            <argument type='datetime' />
        </date-function>
        <date-function name='DATETRUNC' return-type='datetime'>
            <formula part='week'>
                CASE 
                    WHEN %3 = 0 THEN ADDdATE(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00'), INTERVAL - ((DAYOFWEEK(%2) + 6) % 7) DAY)
                    WHEN %3 = 1 THEN ADDdATE(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00'), INTERVAL - ((DAYOFWEEK(%2) + 5) % 7) DAY)
                    ELSE ADDdATE(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00'), INTERVAL - ((DAYOFWEEK(%2) + 5) % 7) DAY)
                END
            </formula>
            <argument type='localstr' />
            <argument type='datetime' />
            <argument type='localstr' />
        </date-function>
Image

i try to modify <start-of-week-offset value='***' />, but not work.

catpineapple avatar Jun 26 '25 12:06 catpineapple