如何从MySQL中的DATETIME字段中仅选择日期?

时间:2012-01-27 10:40:23

标签: mysql date

我在MySQL数据库中有一个用DATETIME设置的表。我需要在此表中SELECT仅限DATE并排除时间。

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


实施例

  

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

我只需为此SELECT

执行2012-01-23

18 个答案:

答案 0 :(得分:136)

SELECT DATE(ColumnName) FROM tablename;

更多关于MySQL DATE() function

答案 1 :(得分:29)

你可以使用date_format

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

答案 2 :(得分:14)

您可以将select DATE(time) from appointment_details仅用于日期

您只能使用select TIME(time) from appointment_details

答案 3 :(得分:10)

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

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

有关Mysql DATE和TIME函数 click here.

的更多信息

答案 4 :(得分:10)

尝试使用
今天:

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


选定日期:

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

答案 5 :(得分:6)

我尝试执行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替换为您当地的时区。)


唯一的例外是,如果您当地的时区是格林尼治标准时间,并且由于您的当地时间与UTC相同,则不会进行夏令时。

答案 6 :(得分:5)

只需你可以做

SELECT DATE(date_field) AS date_field FROM table_name

答案 7 :(得分:3)

哟可以试试这个:

XmlEventReader

如果您检查以下内容:

StreamSource

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

答案 8 :(得分:2)

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

可替换地 SELECT * FROM Profiles WHERE left(DateReg,10)=$date

干杯

答案 9 :(得分:1)

使用DATE_FORMAT

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

示例:

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

答案 10 :(得分:1)

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

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

答案 11 :(得分:1)

Select * from table_name where date(datetime)

答案 12 :(得分:0)

为了实际为这个问题提出有效的解决方案:

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

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

答案 13 :(得分:0)

请尝试此答案。

0 1 2 3 4

答案 14 :(得分:0)

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

users: Users[];
ngOnInit() {
  this.usersService.$users
    .subscribe((users: User[]) => {
      this.users = users.filter(user => user.status && user.name === 'some value')
    });
}

答案 15 :(得分:0)

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

i

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

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

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

答案 16 :(得分:0)

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

您只能使用来自appointment_details 的select DATE(time) for date

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))

答案 17 :(得分:0)

我喜欢这个

mysql:-

toStrictEqual

php

select * from dateTimeTable where datetimeCol >= '2021-08-05 00:00:00' and datetimeCol <= '2021-08-05 23:59:59'

$date 包含类似 2021-08-05 的日期

然后我从头开始删除字符以删除时间。时间字符是固定的,所以很容易删除