【问题标题】:mysql query to find data less then today datemysql查询查找少于今天日期的数据
【发布时间】:2015-11-02 16:06:39
【问题描述】:
my date is stored in database 11/01/2015 12:00 AM - 11/01/2015 11:59 PM As Event_duration and i the first date is event starting date and after '-' is event ending date and i want to echo count of active event so i want to compare end date  11/01/2015 11:59 PM from today date time in my sql query to print in active event count please help me with this what should be the query to find active event count after exploding the date in database after dash '-' please give me the proper solution for this
i m trying this code

它正在产生这个输出: 2015 年 11 月 2 日下午 13:13

     <?php
                         echo $Qry_Act_Count="SELECT SPLIT_STR(Event_Duration, '-', 2) as Active_Event_Time_Show from create_event";
                            $Act_Event_Count=0;
                            $Act_Count3=mysqli_query($con,$Qry_Act_Count);

                           date_default_timezone_set("Asia/Calcutta");
                           $Act_date = date("m/d/Y H:i A");

                           while ($Act_Rows=mysqli_fetch_assoc($Act_Count3))
                            {
                                  echo '<br>' . $Act_date  . '>' . $Act_Rows['Active_Event_Time_Show'];
                                  if($Act_date <= $Act_Rows['Active_Event_Time_Show']){

                                         echo $Act_Event_Count++;
                                        }
                                          }
                                                ?>

【问题讨论】:

  • 我认为将您的 event_duration [VARCHAR] 转换为 event_start [DATETIME | TIMESTAMP] 和 event_end [日期时间 |时间戳]

标签: mysql


【解决方案1】:

您想使用 SUBSTRING_INDEX( ) 获取适当的日期,然后使用 STR_TO_DATE( ) 将其转换为有效日期

SELECT whatever
FROM table
WHERE STR_TO_DATE(TRIM(SUBSTRING_INDEX(my_date, '-', -1)),'%m/%d/%Y %r') < NOW()

分解

SUBSTRING_INDEX(my_date, '-', -1) 说给我最后一个可以被分隔符'-'分割的元素

TRIM() 只是删除任何额外的空格,因为你有

STR_TO_DATE() 将该字符串转换为特定格式的日期。在你的情况下,你想要它月/日/年

%r 是为了说明文档中的晚上 11:59

%r - 12 小时 AM 或 PM 格式的时间 (hh:mm:ss AM/PM)

如果您愿意,可以将%r 替换为%h:%i %p,但我更喜欢%r,因为它更简洁,编写的代码更少:)

【讨论】:

    【解决方案2】:

    这个过程你需要一些步骤:-

    第一次使用SUBSTRING_INDEX

    SUBSTRING_INDEX('11/01/2015 12:00 AM-11/01/2015 11:59 PM','-',-1)
    

    第二次使用Str_to_date

    Str_to_date(
    SUBSTRING_INDEX('11/01/2015 12:00 AM-11/01/2015 11:59 PM','-',1),'%m/%d/%Y %h:%i')
    

    试试这个查询:-

    SELECT * FROM table
     WHERE Str_to_date(
    SUBSTRING_INDEX('11/01/2015 12:00 AM-11/01/2015 11:59 PM','-',1),'%m/%d/%Y %h:%i') 
    < NOW()
    

    或使用interval 12 HOUR 获取24 hours format

    SELECT * FROM table WHERE 
    str_to_date(SUBSTRING_INDEX('11/01/2015 12:00 AM-11/01/2015 1:59 PM','-',-1),'%m/%d/%Y %h:%i')
    + interval 12 HOUR < NOW()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      相关资源
      最近更新 更多