Поле DATE в базе данных имеет следующий формат:
2012-11-12 00:00:00
Я хочу удалить время с даты и вернуть дату:
11/12/2012
Поле DATE в базе данных имеет следующий формат:
2012-11-12 00:00:00
Я хочу удалить время с даты и вернуть дату:
11/12/2012
Прежде всего, если ваши даты в формате 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)
) перед отправкой в службы отчетов и обработайте, как описано выше.
просто используйте, (в TSQL)
SELECT convert(varchar, columnName, 101)
в MySQL
SELECT DATE_FORMAT(columnName, '%m/%d/%Y')
Я нашел этот метод весьма полезным. Однако он преобразует ваш формат даты и времени в дату, но тем не менее он делает работу за то, что мне нужно. (Мне просто нужно было отобразить дату в отчете, время было неактуальным).
CAST(start_date AS DATE)
ОБНОВЛЕНИЕ
(Помните, что я стажер;))
Я понял, что это проще, если вы используете SSRS.
Легче фактически изменить свойства текстового поля, где поле находится в отчете. Щелкните правой кнопкой мыши поле > Номеp > Дата и выберите соответствующий формат!
Лично я вернул бы полное, исходное значение datetime и отформатировал его в клиентском коде.
Таким образом, вы можете использовать настройку локали пользователя, чтобы дать правильному значению этому пользователю.
"11/12" неоднозначно. Это:
SELECT DATE('2012-11-12 00:00:00');
возвращает
2012-11-12
Для получения дополнительной информации см. это: Форматы даты 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
В mysql, по крайней мере, вы можете использовать DATE(theDate)
.
Вы можете попробовать следующее:
SELECT CONVERT(VARCHAR(10),yourdate,101);
или это:
select cast(floor(cast(urdate as float)) as datetime);
Используйте этот SQL:
SELECT DATE_FORMAT(date_column_here,'%d/%m/%Y') FROM table_name;
TSQL
SELECT CONVERT(DATE, GETDATE()) // 2019-09-19
SELECT CAST(GETDATE() AS DATE) // 2019-09-19
SELECT CONVERT(VARCHAR, GETDATE(), 23) // 2019-09-19