Answers:
SELECT DATE(ColumnName) FROM tablename;
有关MySQL DATE()函数的更多信息。
您可以使用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');"
今天尝试使用:
SELECT * FROM `tbl_name` where DATE(column_name) = CURDATE()
在所选日期:
SELECT * FROM `tbl_name` where DATE(column_name) = DATE('2016-01-14')
在MYSQL中,我们有一个称为DATE_FORMAT(date,format)的函数。在您的情况下,您的select语句将变为:
SELECT DATE_FORMAT(dateTimeFieldName,"%a%m%Y") as dateFieldName FROM table_name
有关Mysql DATE和TIME函数的更多信息,请单击此处。
我尝试执行SELECT DATE(ColumnName)
,但是不适用于†TIMESTAMP
列,因为它们存储在UTC中,并且使用UTC日期而不是转换为本地日期。我需要选择时区中特定日期的行,因此将对另一个问题的回答与巴拉斯瓦米·瓦德曼对这个问题的回答结合起来,这就是我所做的:
DATETIME
做就是了 SELECT DATE(ColumnName)
TIMESTAMP
尚未将时区数据加载到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相同。
Select * from table_name where date(datetime)
为了实际上为这个问题提出一个可行的解决方案:
SELECT ... WHERE `myDateColumn` >= DATE(DATE_FORMAT(NOW(),'%Y-%m-%d'));
显然,您可以将NOW()函数更改为所需的任何日期或变量。