【问题标题】:How to select the information from a specific time? I'm using phpmyadmin如何选择特定时间的信息?我正在使用 phpmyadmin
【发布时间】:2020-12-06 13:47:57
【问题描述】:

enter image description here

DATEInvoice 的数据类型是 VARCHAR

从上图中,如果我想选择特定时间的发票信息,比如说从 1-12-2020 00:00:00 到 13-12-2020 23:59:00,我该怎么写?我尝试了很多写法。例如,

SELECT * FROM INVOICE WHERE DATEINVOICE BETWEEN To_date('01-12-2020 00:00:00','dd-mm-yyyy HH24:MI:SS') AND To_date('13-12-2020 23:59:00','dd-mm-yyyy HH24:MI:SS')

**但是我得到的结果是返回零行。希望任何人都可以帮助我,我在这方面遇到了麻烦。

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。修复数据模型,以便使用正确的类型存储值!

标签: sql phpmyadmin


【解决方案1】:

首先,您可以将逻辑简化为:

WHERE DATEINVOICE >= '2020-01-12' AND
      DATEINVOICE < '2020-01-14'

在某些数据库中,您应该使用(标准)DATE 关键字标识日期常量:

WHERE DATEINVOICE >= DATE '2020-01-12' AND
      DATEINVOICE < DATE '2020-01-14'

这假定DATEINVOICE 在您的数据库中存储为有效的日期时间/时间戳值。如果它是一个字符串,那么它的类型是错误的。您应该修复您的数据模型。如果其他人创建了这样一个损坏的数据模型,那么您可以转换 WHERE 子句中的值:

WHERE TO_DATE(DATEINVOICE, 'dd-mm-yyyy HH24:MI:SS') >= '2020-01-12' AND
      TO_DATE(DATEINVOICE, 'dd-mm-yyyy HH24:MI:SS') < '2020-01-14'

然而,真正的努力应该是修复数据模型。

【讨论】:

  • 因为DATEINVOICE 中的值是从c++ 插入的。(我正在做一个项目,所以它必须是VARCHAR)。我的问题是如何从特定时间选择*。点击链接查看图片
  • 还是报错,说FUNCTION TO_DATE不存在
  • @watashiwachooi 。 . .您应该使用 parameter 而不是修改查询字符串。这才是真正的终极问题。
【解决方案2】:

可以使用请尝试 MySQL 的 DATE() 函数:

WHERE DATE(datetime) = '2009-10-20'

你也可以试试这个:

WHERE datetime LIKE '2009-10-20%'

【讨论】:

  • 我想要一个具体的日期,而不仅仅是一个日期
  • 你能试试 Date() 函数吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2019-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多