MySQL의 DATETIME 필드에서 날짜 만 선택하는 방법은 무엇입니까?


115

으로 설정된 MySQL 데이터베이스에 테이블이 DATETIME있습니다. SELECT이 테이블에는 DATE까지만 필요 하며 시간은 제외됩니다.

어떻게 할 SELECT특정 열이으로 설정되어있는 경우에도, 단지 날짜와 시간을 우회하여이 테이블에 DATETIME?


지금이야: 2012-01-23 09:24:41

나는 SELECT이것을 위해 만해 야합니다.2012-01-23


답변:


165

SELECT DATE(ColumnName) FROM tablename;

MySQL DATE () 함수 에 대해 자세히 알아보십시오 .


이 작업을 수행하려고하는데 작동하지 않습니다. $ query = "SELECT * FROM Profiles WHERE date (DateReg = '". $ date. "')";
DiegoP.

2
날짜 (datereg) = 'dateHere'
Balaswamy Vaddeman

$ query = "SELECT * FROM 프로필 WHERE date (DateReg) = '". $ date. "'"; 작동합니다. '여기서 "절에 사용하기 전에 $ 날짜를 포맷 할 경우, 반드시 두 날짜가 같은 형식으로되어 있는지 확인합니다.
Clain Dsilva에게

ColumnName에 인덱스를 사용하지 않기 때문에 조심해야한다고 생각합니다
d0x

열 이름 앞뒤에 Grave 액센트 기호`를 추가하는 것을 잊지 마십시오. 일부 MySql 버전에서는 현재 날짜가 표시 될 수 있습니다.
user2092317 jul.

40

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'만 사용하여 특정 날짜의 데이터를 선택할 수 있기 때문에 완벽하게 작동합니다.
mjwrazor

DATE_FORMAT 선택 (날짜, '% Y- % M- % D') TABLENAME에서 대신 해 사용 자본 "Y"반환하지 않습니다 작은 "Y"
Nirav 조시

14

select DATE(time) from appointment_details날짜에만 사용할 수 있습니다

또는

select TIME(time) from appointment_details시간에만 사용할 수 있습니다


13


오늘 사용해보십시오 :

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


선택한 날짜 :

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

2020 : 고마워 친구!
MarcoZen


6

간단히 할 수 있습니다

SELECT DATE(date_field) AS date_field FROM table_name

6

나는 일을 시도 SELECT DATE(ColumnName)하지만 이것이 작동하지 않습니다 에 대한 TIMESTAMP 그들이 UTC에 저장되며 UTC 날짜 대신 현지 날짜로 변환하는 데 사용되기 때문이다. 내 시간대의 특정 날짜에있는 행을 선택해야했기 때문에이 다른 질문에 대한답변을이 질문에 대한 Balaswamy Vaddeman의 답변결합하여 다음을 수행했습니다.

날짜를 다음과 같이 저장하는 경우 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와 동일하기 때문에 일광 절약 시간제를 사용하지 않는 경우입니다.


3

SELECT * FROM Profiles WHERE date(DateReg)=$date$ date가 yyyy-mm-dd에있는 위치를 시도하십시오 .

또는 SELECT * FROM Profiles WHERE left(DateReg,10)=$date

건배


3

요 이것을 시도 할 수 있습니다 :

SELECT CURDATE();

다음을 확인하는 경우 :

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

시간이 오래 걸리는 것을 알 수 있습니다.




1

사용하다 DATE_FORMAT

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

예:

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

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

이것은 'yyyy-mm-dd'형식으로 날짜를 가져 오는 데 사용할 수 있습니다.


1

time 열이 timestamp에 있으면이 쿼리를 사용하여 해당 타임 스탬프에서 날짜 값을 가져옵니다.

SELECT DATE(FROM_UNIXTIME(time)) from table 

0

이 질문에 실제로 작동하는 해결책을 넣으려면 :

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

당연히 NOW () 함수를 원하는 날짜 나 변수로 변경할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.