【问题标题】:Converting T-SQL's date functions to MySQL将 T-SQL 的日期函数转换为 MySQL
【发布时间】:2021-11-15 06:58:28
【问题描述】:

我正在尝试将此 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,

【问题讨论】:

  • MySQL 给你什么?
  • NULL 值@squillman
  • 你能发布目前的 MySQL 版本吗?
  • 您是否只是想将任何给定的日期/时间值显示为m/d/y?还是所有 dateadd 和 datediff 噪音都有什么原因?
  • @need_help12 - 请将其作为文本而不是图像添加到问题中,以便更容易发现。

标签: mysql sql-server


【解决方案1】:

以下是如何在 MySQL 中以 m/d/y 格式显示日期:

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,但 looking up DATE_FORMAT() 花了大约两分钟。

顺便说一句,您从同事那里得到的现有表达既不必要地复杂,又a real drag on performance due to the FORMAT() function。试试:

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 is a sensible format,或者你应该不遗余力地删除那些前导零......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-17
    • 2011-02-28
    • 1970-01-01
    • 2021-02-23
    • 2016-06-01
    • 1970-01-01
    • 2019-12-05
    相关资源
    最近更新 更多