Подтвердить что ты не робот

Как удалить время из даты и времени

Поле DATE в базе данных имеет следующий формат:

2012-11-12 00:00:00

Я хочу удалить время с даты и вернуть дату:

11/12/2012
4b9b3361

Ответ 1

Прежде всего, если ваши даты в формате varchar, измените это, сохраняйте даты как даты, это избавит вас от многих головных болей, и это то, что лучше делать раньше, чем позже. Проблема будет только усугубляться.

Во-вторых, если у вас есть дата , НЕ конвертируйте дату в varchar! Сохраните его в формате даты и используйте форматирование на стороне приложения, чтобы получить необходимый формат даты.

Есть несколько способов сделать это в зависимости от вашей СУБД:


SQL-Server 2008 и более поздние версии:

SELECT  CAST(CURRENT_TIMESTAMP AS DATE)

SQL-Server 2005 и ранее

SELECT  DATEADD(DAY, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP), 0)

SQLite

SELECT  DATE(NOW())

Oracle

SELECT  TRUNC(CURRENT_TIMESTAMP)

Postgresql

SELECT  CURRENT_TIMESTAMP::DATE

Если вам необходимо использовать форматирование, специфичное для данной культуры, в своем отчете, вы можете либо явно указать формат получаемого текстового поля (например, дд/мм/гггг), либо установить язык так, чтобы он отображал соответствующий формат даты для этого языка.

В любом случае это намного лучше обрабатывается за пределами SQL, поскольку преобразование в varchar в SQL повлияет на любую сортировку, которую вы можете выполнять в своем отчете.

Если вы не можете/не будете изменять тип данных на DATETIME, тогда все равно преобразуйте его в дату в SQL (например, CONVERT(DATETIME, yourField)) перед отправкой в службы отчетов и обработайте, как описано выше.

Ответ 2

просто используйте, (в TSQL)

SELECT convert(varchar, columnName, 101)

в MySQL

SELECT DATE_FORMAT(columnName, '%m/%d/%Y')

Ответ 3

Я нашел этот метод весьма полезным. Однако он преобразует ваш формат даты и времени в дату, но тем не менее он делает работу за то, что мне нужно. (Мне просто нужно было отобразить дату в отчете, время было неактуальным).

CAST(start_date AS DATE)

ОБНОВЛЕНИЕ

(Помните, что я стажер;))

Я понял, что это проще, если вы используете SSRS.

Легче фактически изменить свойства текстового поля, где поле находится в отчете. Щелкните правой кнопкой мыши поле > Номеp > Дата и выберите соответствующий формат!

Ответ 4

Лично я вернул бы полное, исходное значение datetime и отформатировал его в клиентском коде.

Таким образом, вы можете использовать настройку локали пользователя, чтобы дать правильному значению этому пользователю.

"11/12" неоднозначно. Это:

  • 12 ноября
  • 11 декабря

Ответ 5

SELECT DATE('2012-11-12 00:00:00');

возвращает

2012-11-12

Ответ 6

Для получения дополнительной информации см. это: Форматы даты SQL Server

[MM/DD/YYYY]

SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 101) from tbl

[DD/MM/YYYY]

SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 103) from tbl

Live Demo

Ответ 7

В mysql, по крайней мере, вы можете использовать DATE(theDate).

Ответ 8

Вы можете попробовать следующее:

SELECT CONVERT(VARCHAR(10),yourdate,101);

или это:

select cast(floor(cast(urdate as float)) as datetime);

Ответ 9

Используйте этот SQL:

SELECT DATE_FORMAT(date_column_here,'%d/%m/%Y') FROM table_name;

Ответ 10

TSQL

SELECT CONVERT(DATE, GETDATE())         // 2019-09-19
SELECT CAST(GETDATE() AS DATE)          // 2019-09-19
SELECT CONVERT(VARCHAR, GETDATE(), 23)  // 2019-09-19