【问题标题】:How to convert a date in an order by statement? (MySQL)如何通过语句转换订单中的日期? (MySQL)
【发布时间】:2021-11-15 09:17:21
【问题描述】:

我正在尝试按日期对结果进行排序,但日期是字符串,而不是日期对象,因此结果无法正确显示。我尝试将日期字符串转换为 sql 请求中的日期对象,但现在没有任何返回。屏幕上没有显示结果。这是我的代码:

SELECT * FROM tblnewsftb 
WHERE Status = 'Active'
ORDER BY CONVERT(datetime, ItemDate, 102) DESC

我做错了什么?

【问题讨论】:

  • 你必须显示你的字符串的格式并使用:dev.mysql.com/doc/refman/8.0/en/…
  • 这些日期是否显示时间?例如2020-05-09 15:29:00?如前所述,显示字符串的特定格式会很有帮助。如果有帮助,您可以尝试使用 TIMESTAMP 而不是 DATETIME - 并且可能使用 ALTER TABLE 来转换数据类型,而不是上面的。
  • 您确定您使用的是 MySQL 吗?该语法就是 SQL Server 语法。
  • @GordonLinoff 我正在使用 MySQL。这就是问题所在。我使用的是 SQL 语法。

标签: mysql sql asp.net


【解决方案1】:

在 MySQL 中,CONVERT() 只接受两个参数,表达式和数据类型。数据类型次之。

例子:

CONVERT(ItemDate, DATETIME)

但这只有在表达式(本例中的 ItemDate 列)可按原样转换为 DATETIME 时才有效。我猜您正在使用 MySQL 不支持的某些日期格式,例如 'MM/DD/YYYY' 或其他。

如果您有自定义格式,则必须使用 STR_TO_DATE()

例子:

STR_TO_DATE(ItemDate, '%m/%d/%Y')

如果您希望它们正确排序,最好将日期时间值存储在适当的 DATETIME 列而不是字符串列中。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 2014-02-10
  • 1970-01-01
  • 2014-04-12
相关资源
最近更新 更多