【发布时间】:2012-02-20 08:50:48
【问题描述】:
我在 MySQL 数据库中有一个使用DATETIME 设置的表。我需要在此表中 SELECT 仅在 DATE 之前,不包括时间。
我如何在此表中 SELECT 仅按日期并绕过时间,即使该特定列设置为 DATETIME?
示例
现在是:
2012-01-23 09:24:41
我只需要为此做一个SELECT:2012-01-23
【问题讨论】:
我在 MySQL 数据库中有一个使用DATETIME 设置的表。我需要在此表中 SELECT 仅在 DATE 之前,不包括时间。
我如何在此表中 SELECT 仅按日期并绕过时间,即使该特定列设置为 DATETIME?
现在是:
2012-01-23 09:24:41
我只需要为此做一个SELECT:2012-01-23
【问题讨论】:
SELECT DATE(ColumnName) FROM tablename;
【讨论】:
你可以使用 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 DATE(time) from appointment_details 表示日期
或
select TIME(time) from appointment_details 只能用于时间
【讨论】:
尝试使用
今天:
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函数的更多信息 click here.
【讨论】:
你可以做到的
SELECT DATE(date_field) AS date_field FROM table_name
【讨论】:
我尝试创建SELECT DATE(ColumnName),但是对于TIMESTAMP 列†,这不起作用,因为它们以 UTC 格式存储并且使用 UTC 日期而不是转换为当地日期。我需要在我的时区中选择特定日期的行,因此将我的answer to this other question 与Balaswamy 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 相同。
【讨论】:
请试试这个答案。
SELECT * FROM `Yourtable` WHERE date(`dateField`) = '2018-09-25'
【讨论】:
试试
SELECT * FROM Profiles WHERE date(DateReg)=$date 其中 $date 在 yyyy-mm-dd 中
或者
SELECT * FROM Profiles WHERE left(DateReg,10)=$date
干杯
【讨论】:
你可以试试这个:
SELECT CURDATE();
如果您检查以下内容:
SELECT NOW(); SELECT DATE(NOW()); SELECT DATE_FORMAT(NOW(),'%Y-%m-%d');
您可以看到它需要很长时间。
【讨论】:
Select * from table_name where date(datetime)
【讨论】:
使用DATE_FORMAT
select DATE_FORMAT(date,'%d') from tablename =>Date only
示例:
select DATE_FORMAT(`date_column`,'%d') from `database_name`.`table_name`;
【讨论】:
SELECT DATE_FORMAT(NOW() - INTERVAL FLOOR(RAND() * 14) DAY,'%Y-%m-%d');
这个可以用来获取'yyyy-mm-dd'格式的日期。
【讨论】:
如果时间列在时间戳上,您将使用此查询从该时间戳获取日期值
SELECT DATE(FROM_UNIXTIME(time)) from table
【讨论】:
你可以使用 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))
【讨论】:
为了实际解决这个问题:
SELECT ... WHERE `myDateColumn` >= DATE(DATE_FORMAT(NOW(),'%Y-%m-%d'));
显然,您可以将 NOW() 函数更改为您想要的任何日期或变量。
【讨论】:
我在我的 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 之间)的所有记录。
【讨论】: