#mysql #sql-server
Вопрос:
Я пытаюсь преобразовать этот код MS SQL Server в MySQL, но я не получаю ту же дату, которую получил бы в MS SQL Server. Кто-нибудь знает, как изменить этот код, чтобы он работал в MySQL? В качестве примера используется отметка времени «2021-08-03 00:00:00».
SELECT
FORMAT( DATEADD( DAY, 0, DATEDIFF( DAY, 0, '2021-08-03 00:00:00')), 'd', 'en-us' ) AS 'day'
Код MYSQL до сих пор.
SELECT FORMAT (adddate(datediff(NOW(), ma.Timestamp), INTERVAL 0 DAY), 'd', 'en-us') AS day,
Комментарии:
1. Что дает вам MySQL?
2. НУЛЕВЫЕ значения @squillman
3. Не могли бы вы опубликовать версию MySQL до сих пор?
4. Вы просто пытаетесь представить любое заданное значение даты/времени как
m/d/y
? Или есть какая-то причина для всего шума dateadd и datediff?5. @need_help12 — Пожалуйста, добавьте его в вопрос в виде текста, а не изображения, чтобы его было легче заметить.
Ответ №1:
Вот как представить даты в m/d/y
формате MySQL:
CREATE TABLE `dates` (d datetime);
INSERT `dates`(d) VALUES('2021-08-31 03:00'),('2021-11-13 05:40');
SELECT DATE_FORMAT(d, '%c/%e/%Y') AS day FROM `dates`;
Результаты:
day
----------
8/31/2021
11/13/2021
- Пример бд<>скрипка<>
Я ничего об этом не знал, так как едва могу писать MySQL, но поиск DATE_FORMAT()
занял около двух минут.
Кроме того, существующее выражение, которое вы получили от своих коллег, является как излишне сложным, так и реальным снижением производительности из-за FORMAT()
функции. Попробуй:
DECLARE @d date = '2021-08-03T00:00:00.000';
SELECT CONVERT(char(10), @d, 101);
Если у вас уже есть дата-время, это нормально, вы все равно можете удалить из него время без шума dateadd и datediff:
DECLARE @d datetime = '2021-08-03T00:00:00.000';
SELECT CONVERT(char(10), @d, 101);
Не то чтобы я считал, что m/d/y
это разумный формат в первую очередь, или что вам следует изо всех сил стараться удалить эти ведущие нули…