如何在 MySQL 中只从 DATETIME 字段选择日期?

我在 MySQL 数据库中有一个用 DATETIME建立的表。我需要 SELECT在这个表中只按日期和不包括时间。

如何在这个表中 SELECT只通过日期和绕过时间,即使该特定列被设置为 DATETIME


例子

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

我需要做的 SELECT只有这个: 2012-01-23

338949 次浏览

SELECT DATE(ColumnName) FROM tablename;

更多关于 函数的资料。

其中 $date 在 yyyy-mm-dd 中

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

干杯

只能对日期使用 select DATE(time) from appointment_details

或者

您可以只对时间使用 select TIME(time) from appointment_details

可以使用 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(date_field) AS date_field FROM table_name
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 ... WHERE `myDateColumn` >= DATE(DATE_FORMAT(NOW(),'%Y-%m-%d'));

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

我尝试做一个 SELECT DATE(ColumnName),但是这个 不起作用对于 TIMESTAMP column ns,因为它们存储在 UTC 中,并且使用 UTC 日期而不是转换为本地日期。我需要选择在我所在时区的特定日期的行,所以结合我的 回答另一个问题巴拉斯瓦米 · 瓦德曼对这个问题的回答,这就是我所做的:

如果将日期存储为 DATETIME

只要做 SELECT DATE(ColumnName)

如果将日期存储为 TIMESTAMP

如果您还没有将时区数据加载到 MySQL 中,那么可以将其加载到 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代替本地时区。)


唯一的例外是如果你的当地时区是格林尼治标准时间,并且你没有夏令时,因为你的当地时间和协调世界时一样。

尝试使用
今天:

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


选定日期:

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

在 MYSQL 中,我们有一个称为 DATE _ FORMAT (日期,格式)的函数。 在您的情况下,您的 select 语句将变成如下:-

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

有关 MysqlDATE 和 TIME 函数 点击这里。的详细信息,请参阅

SELECT DATE_FORMAT(NOW() - INTERVAL FLOOR(RAND() * 14) DAY,'%Y-%m-%d');

这个函数可以用来获取‘ yyyy-mm-dd’格式的日期。

你可以试试这个:

SELECT CURDATE();

如你核对以下资料:

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

你可以看到,这需要很长的时间。

请试试这个答案。

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

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

SELECT DATE(FROM_UNIXTIME(time)) from table

我在 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 (或 BEWEEN The DATES)上的所有记录。

可以使用 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');"


您可以只为日期使用任命 _ 详细信息中的选择 DATE (time)

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

从表中选择日期(FROM _ UNIXTIME (time))