【问题标题】:How to select only date from a DATETIME field in MySQL?如何从 MySQL 的 DATETIME 字段中仅选择日期?
【发布时间】:2012-02-20 08:50:48
【问题描述】:

我在 MySQL 数据库中有一个使用DATETIME 设置的表。我需要在此表中 SELECT 仅在 DATE 之前,不包括时间。

我如何在此表中 SELECT 仅按日期并绕过时间,即使该特定列设置为 DATETIME


示例

现在是:2012-01-23 09:24:41

我只需要为此做一个SELECT2012-01-23

【问题讨论】:

标签: mysql date


【解决方案1】:

SELECT DATE(ColumnName) FROM tablename;

更多关于MySQL DATE() function

【讨论】:

  • 我正在尝试这样做,但它不起作用 $query="SELECT * FROM Profiles WHERE date(DateReg='".$date."')";
  • $query="SELECT * FROM Profiles WHERE date(DateReg) ='".$date."'";这应该有效。确保两个日期的格式相同,如果没有在使用“where”子句之前格式化 $date。
  • 我认为你需要小心,因为它不会使用 ColumnName 上的索引
  • 不要忘记在列名前后添加重音符号`。在某些 MySql 版本中,它可能会显示当前日期。
【解决方案2】:

你可以使用 date_format

select DATE_FORMAT(date,'%y-%m-%d') from tablename

时区

sql2 = "SELECT DATE_FORMAT(CONVERT_TZ(CURDATE(),'US/Central','Asia/Karachi'),'%Y-%m-%d');"

【讨论】:

  • 这很完美,因为现在我可以通过日期格式“%d”来选择特定日期的数据。
  • select DATE_FORMAT(date,'%Y-%m-%d') from tablename 小“y”不返回年份,改用大写“Y”
【解决方案3】:

您只能使用select DATE(time) from appointment_details 表示日期

select TIME(time) from appointment_details 只能用于时间

【讨论】:

    【解决方案4】:

    尝试使用
    今天:

    SELECT * FROM `tbl_name` where DATE(column_name) = CURDATE()
    


    选定日期:

    SELECT * FROM `tbl_name` where DATE(column_name) = DATE('2016-01-14')
    

    【讨论】:

      【解决方案5】:

      在 MYSQL 中,我们有一个名为 DATE_FORMAT(date,format) 的函数。 在您的情况下,您的 select 语句将变成这样:-

      SELECT DATE_FORMAT(dateTimeFieldName,"%a%m%Y") as dateFieldName FROM table_name

      关于Mysql DATE和TIME函数的更多信息 click here.

      【讨论】:

        【解决方案6】:

        你可以做到的

        SELECT DATE(date_field) AS date_field FROM table_name
        

        【讨论】:

          【解决方案7】:

          我尝试创建SELECT DATE(ColumnName),但是对于TIMESTAMP,这不起作用,因为它们以 UTC 格式存储并且使用 UTC 日期而不是转换为当地日期。我需要在我的时区中选择特定日期的行,因此将我的answer to this other questionBalaswamy Vaddeman's answer to this question 结合起来,这就是我所做的:

          如果您将日期存储为DATETIME

          只要SELECT DATE(ColumnName)

          如果您将日期存储为TIMESTAMP

          Load the time zone data into MySQL 如果您还没有这样做的话。对于 Windows 服务器,请参阅上一个链接。对于 Linux、FreeBSD、Solaris 和 OS X 服务器,您可以这样做:

          mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
          

          然后像这样格式化您的查询:

          SELECT DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York'))
          

          您也可以像这样将其放在查询的WHERE 部分中(但请注意,该列上的索引不起作用):

          SELECT * FROM tableName
          WHERE DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York')) >= '2015-02-04'
          

          (显然,将America/New_York 替换为您当地的时区。)


          唯一的例外是,如果您的本地时区是 GMT,并且您不执行夏令时,因为您的本地时间与 UTC 相同。

          【讨论】:

            【解决方案8】:

            请试试这个答案。

            SELECT * FROM `Yourtable` WHERE date(`dateField`) = '2018-09-25'
            

            【讨论】:

              【解决方案9】:

              试试 SELECT * FROM Profiles WHERE date(DateReg)=$date 其中 $date 在 yyyy-mm-dd 中

              或者 SELECT * FROM Profiles WHERE left(DateReg,10)=$date

              干杯

              【讨论】:

                【解决方案10】:

                你可以试试这个:

                SELECT CURDATE();
                

                如果您检查以下内容:

                SELECT NOW(); SELECT DATE(NOW()); SELECT DATE_FORMAT(NOW(),'%Y-%m-%d');
                

                您可以看到它需要很长时间。

                【讨论】:

                  【解决方案11】:
                  Select * from table_name where date(datetime)
                  

                  【讨论】:

                    【解决方案12】:

                    使用DATE_FORMAT

                    select DATE_FORMAT(date,'%d') from tablename =>Date only
                    

                    示例:

                    select DATE_FORMAT(`date_column`,'%d') from `database_name`.`table_name`;
                    

                    【讨论】:

                      【解决方案13】:
                      SELECT DATE_FORMAT(NOW() - INTERVAL FLOOR(RAND() * 14) DAY,'%Y-%m-%d');
                      

                      这个可以用来获取'yyyy-mm-dd'格式的日期。

                      【讨论】:

                        【解决方案14】:

                        如果时间列在时间戳上,您将使用此查询从该时间戳获取日期值

                        SELECT DATE(FROM_UNIXTIME(time)) from table 
                        

                        【讨论】:

                          【解决方案15】:

                          你可以使用 date_format

                          select DATE_FORMAT(date,'%y-%m-%d') from tablename
                          

                          时区

                          sql2 = "SELECT DATE_FORMAT(CONVERT_TZ(CURDATE(),'US/Central','Asia/Karachi'),'%Y-%m-%d');"
                          
                          

                          您可以从约会详细信息中选择日期(时间)仅用于日期

                          or
                          
                          You can use select TIME(time)  from appointment_details for time only
                          if time column is on timestamp , you will get date value from that timestamp using this query
                          

                          从表中选择 DATE(FROM_UNIXTIME(time))

                          【讨论】:

                            【解决方案16】:

                            为了实际解决这个问题:

                            SELECT ... WHERE `myDateColumn` >= DATE(DATE_FORMAT(NOW(),'%Y-%m-%d'));
                            

                            显然,您可以将 NOW() 函数更改为您想要的任何日期或变量。

                            【讨论】:

                              【解决方案17】:

                              我在我的 VB 应用程序中用一个简单的小函数(一行)解决了这个问题。从生产应用程序中取出的代码。函数如下所示:

                              Public Function MySQLDateTimeVar(inDate As Date, inTime As String) As String
                              Return "'" & inDate.ToString(format:="yyyy'-'MM'-'dd") & " " & inTime & "'"
                              End Function
                              

                              用法: 假设我有 DateTimePicker1 和 DateTimePicker2,用户必须定义​​开始日期和结束日期。不管日期是否相同。我需要仅使用 DATE 查询 DATETIME 字段。我的查询字符串很容易像这样构建:

                              Dim QueryString As String = "Select * From SOMETABLE Where SOMEDATETIMEFIELD BETWEEN " & MySQLDateTimeVar(DateTimePicker1.Value,"00:00:00") & " AND " & MySQLDateTimeVar(DateTimePicker2.Value,"23:59:59")
                              

                              该函数为查询中的 DATETIME 字段生成正确的 MySQL DATETIME 语法,并且查询正确返回该 DATE(或 DATES 之间)的所有记录。

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 2014-01-27
                                • 1970-01-01
                                • 1970-01-01
                                • 2012-06-11
                                • 1970-01-01
                                • 2012-11-23
                                • 1970-01-01
                                相关资源
                                最近更新 更多