Як розділити DATE і TIME з DATETIME в MySQL


84

Я зберігаю поле DATETIME у таблиці. Кожне значення виглядає приблизно так: 2012-09-09 06:57:12 .

Я використовую цей синтаксис:

   date("Y-m-d H:i:s");

Тепер моє питання полягає в тому, як під час отримання даних, як можна отримати дату та час окремо , використовуючи єдиний запит MySQL?

Дата, така як 2012-09-09 і час, як 06:57:12 .


ймовірно, ви шукаєте, DATE_FORMATа ні, DATEі TIMEтому що це дасть вам дату за замовчуванням, якщо ви шукаєте час і час за замовчуванням, якщо ви шукаєте дату, див. мою відповідь нижче.
Джон Ву

Відповіді:


128

Ви можете досягти цього за допомогою DATE_FORMAT () ( клацніть на посилання, щоб переглянути інші формати )

SELECT DATE_FORMAT(colName, '%Y-%m-%d') DATEONLY, 
       DATE_FORMAT(colName,'%H:%i:%s') TIMEONLY

Демонстрація SQLFiddle


Привіт, як отримати значення ?? чи можу я використовувати echo DATEONLYдля друку дату та echo TIMEONLYдля друку часу ?? Або що??
Miss Rosy,

@MissRosy так, ви можете використовувати їх псевдонім ( наприклад, DATEONLY та TIMEONLY ), щоб отримати потрібні значення.
Джон Ву


@MissRosy ласкаво просимо. найкраще, ви можете відформатувати його в будь-якій формі, яку хочете.
John Woo

@ Джон..так..Я люблю цю штуку :)
Міс Розі

50

відповідно до документації mysql, функція DATE () буде витягувати частину дати файлу datetime та TIME () для часової частини. тому я спробував би:

select DATE(dateTimeFeild) as Date, TIME(dateTimeFeild) as Time, col2, col3, FROM Table1 ...

17

Спробуйте:

SELECT DATE(`date_time_field`) AS date_part, TIME(`date_time_field`) AS time_part FROM `your_table`

це не отримає DATEі TIMEлише як те, що запитує користувач. Це дасть цілу дату та час із типовими значеннями. ПРОДАЙТЕ ЦЕ ПОСИЛАННЯ
John Woo

1
він буде генерувати September, 09 2012 00:00:00-0400для DATE і January, 01 1970 03:20:38-0500для ЧАСУ
John Woo

4
ну, відповідно до запиту, він надає 2012-09-09 як date_part та 06:57:12 як частину часу в mysql
Sudhir Bastakoti

@ Sudhir ... Велике спасибі за відповідь. Це також правильно, але ... за допомогою цього DATE_FORMAT()ти робиш більш гнучким.
Miss Rosy,

1
@MissRosy ласкаво просимо, і так, ви повинні використовувати рішення, яке найбільше підходить і є більш гнучким .. :)
Судхір Бастакоті,


-2

Тільки для використання на дату
date("Y-m-d");

і лише для часового використання
date("H:i:s");


6
привіт, ви даєте рішення php, а не sql :)
maq
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.