select document based on date rangeSelect range of non-identical date from different tableSelect Between Date...

Bitcoin automatically diverted to bech32 address

Sci fi book, man buys a beat up spaceship and intervenes in a civil war on a planet and eventually becomes a space cop

How to create a cover page like this?

What happens if you declare more than $10,000 at the US border?

Bacterial growth inhibitors used in Deodorants

What happens to someone who dies before their clone has matured?

If an area is covered in both Ball Bearings and Caltrops, does the creature need to move at half speed or quarter speed to avoid both their effects?

Was Rowling inspired by the railway station scene in Prince Caspian?

Father gets chickenpox, but doesn't infect his two children. How is this possible?

How quickly could a motion be passed to alter minimum age for POTUS?

What does paperwork mean in this sentence?

Coworker is trying to get me to sign his petition to run for office. How to decline politely?

This Website Needs More Cat Pictures?

Would life expectancy increase if we replaced healthy organs with artificial ones?

Why don't the fuse connections in programmable ROM cause the whole matrix to be shorted together?

Sing Baby Shark

Travel agent didn't append MR to my name and my name ends in MS. This caused my first name to be put as Ms on ticket

Why, in A Midsummer Night's Dream, does "square" means "quarrel"?

How to explain one side of Super Earth is smoother than the other side?

Should corporate security training be tailored based on a users' job role?

Found a major flaw in paper from home university – to which I would like to return

How can a variadic template be used to generate a left-associative expression (aka left fold) in c++11?

Finding Gaps in Date Ranges

Ethernet cable only works in certain positions



select document based on date range


Select range of non-identical date from different tableSelect Between Date Range MysqlSelect rows based on latest dateCalculate ROI for date rangeDate based partitioningConcurrent Users and Foreign KeysMySQL - Query a date rangeselect Data between two date range mysql return wrong valuesA query for results based on date rangeWhich columns should be indexed when all may be used in different search queries?













0















Structure



CREATE TABLE `template` (
`name` VARCHAR(16) NOT NULL COLLATE 'utf8_unicode_ci',
`valid` DATE NULL DEFAULT NULL,
UNIQUE INDEX `name` (`name`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;


Data



enter image description here



I am trying to select right template name based on date. "Valid" column represents date till template is valid. If Template have 0000-00-00 or NULL valid date, that means that this template is current (latest). Template names does not suggest order (they can be random string).



Scenario:



If I have user, that will be created let's say 2020-01-01, then select should pick template with name "yes_4".



Scenario:



User was created in 2018-01-01, then template selected should have name "agreement_x"



Scenario:



User created in 2019-01-15 will select row with name "template_2"



So far:



:date = - user created


query



SELECT * FROM `template` 
WHERE DATE(`valid`) < DATE(:date)
ORDER BY DATE(`valid`) DESC
LIMIT 1









share|improve this question









New contributor




Ing. Michal Hudak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

























    0















    Structure



    CREATE TABLE `template` (
    `name` VARCHAR(16) NOT NULL COLLATE 'utf8_unicode_ci',
    `valid` DATE NULL DEFAULT NULL,
    UNIQUE INDEX `name` (`name`)
    )
    COLLATE='utf8_unicode_ci'
    ENGINE=InnoDB;


    Data



    enter image description here



    I am trying to select right template name based on date. "Valid" column represents date till template is valid. If Template have 0000-00-00 or NULL valid date, that means that this template is current (latest). Template names does not suggest order (they can be random string).



    Scenario:



    If I have user, that will be created let's say 2020-01-01, then select should pick template with name "yes_4".



    Scenario:



    User was created in 2018-01-01, then template selected should have name "agreement_x"



    Scenario:



    User created in 2019-01-15 will select row with name "template_2"



    So far:



    :date = - user created


    query



    SELECT * FROM `template` 
    WHERE DATE(`valid`) < DATE(:date)
    ORDER BY DATE(`valid`) DESC
    LIMIT 1









    share|improve this question









    New contributor




    Ing. Michal Hudak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.























      0












      0








      0








      Structure



      CREATE TABLE `template` (
      `name` VARCHAR(16) NOT NULL COLLATE 'utf8_unicode_ci',
      `valid` DATE NULL DEFAULT NULL,
      UNIQUE INDEX `name` (`name`)
      )
      COLLATE='utf8_unicode_ci'
      ENGINE=InnoDB;


      Data



      enter image description here



      I am trying to select right template name based on date. "Valid" column represents date till template is valid. If Template have 0000-00-00 or NULL valid date, that means that this template is current (latest). Template names does not suggest order (they can be random string).



      Scenario:



      If I have user, that will be created let's say 2020-01-01, then select should pick template with name "yes_4".



      Scenario:



      User was created in 2018-01-01, then template selected should have name "agreement_x"



      Scenario:



      User created in 2019-01-15 will select row with name "template_2"



      So far:



      :date = - user created


      query



      SELECT * FROM `template` 
      WHERE DATE(`valid`) < DATE(:date)
      ORDER BY DATE(`valid`) DESC
      LIMIT 1









      share|improve this question









      New contributor




      Ing. Michal Hudak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.












      Structure



      CREATE TABLE `template` (
      `name` VARCHAR(16) NOT NULL COLLATE 'utf8_unicode_ci',
      `valid` DATE NULL DEFAULT NULL,
      UNIQUE INDEX `name` (`name`)
      )
      COLLATE='utf8_unicode_ci'
      ENGINE=InnoDB;


      Data



      enter image description here



      I am trying to select right template name based on date. "Valid" column represents date till template is valid. If Template have 0000-00-00 or NULL valid date, that means that this template is current (latest). Template names does not suggest order (they can be random string).



      Scenario:



      If I have user, that will be created let's say 2020-01-01, then select should pick template with name "yes_4".



      Scenario:



      User was created in 2018-01-01, then template selected should have name "agreement_x"



      Scenario:



      User created in 2019-01-15 will select row with name "template_2"



      So far:



      :date = - user created


      query



      SELECT * FROM `template` 
      WHERE DATE(`valid`) < DATE(:date)
      ORDER BY DATE(`valid`) DESC
      LIMIT 1






      mysql






      share|improve this question









      New contributor




      Ing. Michal Hudak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      Ing. Michal Hudak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 5 hours ago







      Ing. Michal Hudak













      New contributor




      Ing. Michal Hudak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 6 hours ago









      Ing. Michal HudakIng. Michal Hudak

      1011




      1011




      New contributor




      Ing. Michal Hudak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Ing. Michal Hudak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Ing. Michal Hudak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          1 Answer
          1






          active

          oldest

          votes


















          0














          Something like



          (   SELECT * 
          FROM `template`
          WHERE DATE(`valid`) >= DATE(:date)
          ORDER BY DATE(`valid`)
          LIMIT 1
          )
          UNION ALL
          ( SELECT *
          FROM `template`
          WHERE DATE(`valid`) <= '1970-01-01' OR `valid` IS NULL
          )
          ORDER BY `valid` DESC
          LIMIT 1


          or



          SELECT * 
          FROM `template`
          WHERE CASE WHEN DATE(`valid`) > '1970-01-01'
          THEN `valid`
          ELSE '2038-01-19'
          END >= DATE(:date)
          ORDER BY CASE WHEN DATE(`valid`) > '1970-01-01'
          THEN `valid`
          ELSE '2038-01-19'
          END
          LIMIT 1


          and so on...






          share|improve this answer























            Your Answer








            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "182"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });






            Ing. Michal Hudak is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f230102%2fselect-document-based-on-date-range%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            Something like



            (   SELECT * 
            FROM `template`
            WHERE DATE(`valid`) >= DATE(:date)
            ORDER BY DATE(`valid`)
            LIMIT 1
            )
            UNION ALL
            ( SELECT *
            FROM `template`
            WHERE DATE(`valid`) <= '1970-01-01' OR `valid` IS NULL
            )
            ORDER BY `valid` DESC
            LIMIT 1


            or



            SELECT * 
            FROM `template`
            WHERE CASE WHEN DATE(`valid`) > '1970-01-01'
            THEN `valid`
            ELSE '2038-01-19'
            END >= DATE(:date)
            ORDER BY CASE WHEN DATE(`valid`) > '1970-01-01'
            THEN `valid`
            ELSE '2038-01-19'
            END
            LIMIT 1


            and so on...






            share|improve this answer




























              0














              Something like



              (   SELECT * 
              FROM `template`
              WHERE DATE(`valid`) >= DATE(:date)
              ORDER BY DATE(`valid`)
              LIMIT 1
              )
              UNION ALL
              ( SELECT *
              FROM `template`
              WHERE DATE(`valid`) <= '1970-01-01' OR `valid` IS NULL
              )
              ORDER BY `valid` DESC
              LIMIT 1


              or



              SELECT * 
              FROM `template`
              WHERE CASE WHEN DATE(`valid`) > '1970-01-01'
              THEN `valid`
              ELSE '2038-01-19'
              END >= DATE(:date)
              ORDER BY CASE WHEN DATE(`valid`) > '1970-01-01'
              THEN `valid`
              ELSE '2038-01-19'
              END
              LIMIT 1


              and so on...






              share|improve this answer


























                0












                0








                0







                Something like



                (   SELECT * 
                FROM `template`
                WHERE DATE(`valid`) >= DATE(:date)
                ORDER BY DATE(`valid`)
                LIMIT 1
                )
                UNION ALL
                ( SELECT *
                FROM `template`
                WHERE DATE(`valid`) <= '1970-01-01' OR `valid` IS NULL
                )
                ORDER BY `valid` DESC
                LIMIT 1


                or



                SELECT * 
                FROM `template`
                WHERE CASE WHEN DATE(`valid`) > '1970-01-01'
                THEN `valid`
                ELSE '2038-01-19'
                END >= DATE(:date)
                ORDER BY CASE WHEN DATE(`valid`) > '1970-01-01'
                THEN `valid`
                ELSE '2038-01-19'
                END
                LIMIT 1


                and so on...






                share|improve this answer













                Something like



                (   SELECT * 
                FROM `template`
                WHERE DATE(`valid`) >= DATE(:date)
                ORDER BY DATE(`valid`)
                LIMIT 1
                )
                UNION ALL
                ( SELECT *
                FROM `template`
                WHERE DATE(`valid`) <= '1970-01-01' OR `valid` IS NULL
                )
                ORDER BY `valid` DESC
                LIMIT 1


                or



                SELECT * 
                FROM `template`
                WHERE CASE WHEN DATE(`valid`) > '1970-01-01'
                THEN `valid`
                ELSE '2038-01-19'
                END >= DATE(:date)
                ORDER BY CASE WHEN DATE(`valid`) > '1970-01-01'
                THEN `valid`
                ELSE '2038-01-19'
                END
                LIMIT 1


                and so on...







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 5 hours ago









                AkinaAkina

                4,0361311




                4,0361311






















                    Ing. Michal Hudak is a new contributor. Be nice, and check out our Code of Conduct.










                    draft saved

                    draft discarded


















                    Ing. Michal Hudak is a new contributor. Be nice, and check out our Code of Conduct.













                    Ing. Michal Hudak is a new contributor. Be nice, and check out our Code of Conduct.












                    Ing. Michal Hudak is a new contributor. Be nice, and check out our Code of Conduct.
















                    Thanks for contributing an answer to Database Administrators Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f230102%2fselect-document-based-on-date-range%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Anexo:Material bélico de la Fuerza Aérea de Chile Índice Aeronaves Defensa...

                    Always On Availability groups resolving state after failover - Remote harden of transaction...

                    update json value to null Announcing the arrival of Valued Associate #679: Cesar Manara ...