【问题标题】:MySQL: Comparing the result of two convert functionsMySQL:比较两个转换函数的结果
【发布时间】:2020-05-18 15:31:33
【问题描述】:

我目前正在处理已使用 varchar 中的日期而不是使用日期时间格式进行初始化的数据库。 我应该将数据库的日期与输入日期(实际上是 2020 年 5 月 31 日)进行比较。

这是我的代码中出现问题的部分:

AND Convert(datetime,t1.fin_contrat, 103) > Convert(datetime, '31/05/2020', 103 )

但我有一个来自 PhpMyAdmin 的错误:#1064 - 't1.fin_contrat, 103) 附近的语法错误 >= Convert(datetime, '31/05/2020', 103 ) GROUP BY siren OR' 第 1 行

根据此链接:https://docs.microsoft.com/fr-fr/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15#implicit-conversions varchar 应该能够直接转换为日期时间值。 我尝试使用 WHERE 而不是 AND 它不起作用。所以我别无选择,我正在寻找想法。 感谢您的帮助

【问题讨论】:

  • 题名中有MySQL(与PHP用法一致),但标签和链接暗示SQL Server。您实际使用的是什么数据库?并且需要查询的全文来调试语法错误,无论是哪种方式。

标签: mysql sql phpmyadmin


【解决方案1】:

在 MySQL 中,你需要这样的东西:

where date(t1.fin_contrat) = str_to_date('31/05/2020', '%d/%m/%Y')

这对应于您问题中的代码,但适用于 MySQL。

【讨论】:

    【解决方案2】:

    Microsoft SQL 之间的函数CONVERT 不同。和 Mysql

    https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert

    转换一个字符串。到一个日期。你必须使用STR_TO_DATE

    https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date

    ps:

    每个 sql server 软件(Oracle、Redshift、Posgtres、Mysql、MariaDB、MS SQL server、Sqllite,...)都有自己的 SQL 方言。通常简单的查询是可移植的,但更复杂或使用函数的查询必须重写。

    【讨论】:

    • 每个品牌的SQL数据库都有自己的方言。但是每个 sql server,作为一个特定的品牌,都使用 sql 的 t-sql 方言。
    • 让我感到难过的是,任何所谓的数据库开发人员甚至都不知道他们正在使用什么数据库。你会问别人,他们会说“Management Studio”或“PHPMyAdmin”,这就像听到有人告诉你他们开的是“Sony”汽车,因为它是仪表板上立体声音响上的品牌。 :(
    • 谢谢我确实使用了其他 SQL 方言,因为我使用 MySQL STR_TO_DATE 解决了,对不起
    • 对不起,我的服务器正在使用它的 MariaDB,我没有创建它。
    • MariaDB 是 Mysql 的一个分支,仅供参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2019-08-30
    • 2022-12-04
    相关资源
    最近更新 更多