【问题标题】:SQL date/time field querySQL日期/时间字段查询
【发布时间】:2016-07-09 13:48:10
【问题描述】:

我有一个名为 tblTest 的数据库,它有一个名为 LastDate 的日期/时间字段

我正在尝试运行查询:

update tblTest 
set lastDate= '20/02/2016'
where lastDate = '08/04/2016'

但它不起作用,我试过 CAST('20/02/2016' AS DATE) 但它似乎也不起作用。

谁能给点建议?

谢谢

【问题讨论】:

标签: mysql sql datetime


【解决方案1】:

如果lastDatedatetime 类型,那么这应该可以工作:

update tblTest 
set lastDate = '2016-02-20'
where lastDate = '2016-04-08'

此查询使用根据 ANSI SQL 标准格式化的字符串文字。

【讨论】:

  • 同下 - 3464 - 条件表达式中的数据类型不匹配
  • @Michal 您从哪里发出查询?
  • 嗯,我是从一个为特定公司为此目的编写的小应用程序运行它,所以我猜这将是一个问题。我会尝试从其他地方运行它。
  • @Michal 查询应该可以正常运行。问题可能在于您从客户端发出 sql 语句的方式。
  • 请记住,如果您在该日期格式中使用连字符,它仍然是语言敏感的。例如在该查询之前尝试SET LANGUAGE FRENCH,它将中断,因为2016-02-20 将被解释为第20 个月的第二天。无连字符的格式,例如'20160220',对所有语言都是安全的。
【解决方案2】:

使用

 update tblTest set lastDate= '20-02-2016' where lastDate = '08-04-2016'

既然你使用的是日期时间类型,它应该是

update tblTest set lastDate= '20-02-2016 00:00:00' where lastDate = '08-04-2016 00:00:00'

【讨论】:

  • 不幸的是,当我使用它时,它会出现 3464 - 标准表达式中的数据类型不匹配,这与字符串中缺少时间有关吗?因为该字段是日期/时间类型。
  • 是的,你没有提到。就是这样
  • 不幸的是它仍然在做同样的事情,现在我正在使用 'DD-MM-YYYY HH:MM:SS' 格式并且它正在做同样的事情。
【解决方案3】:

这已经奏效了:

update tblData set LastSalesDate = #2016-03-20# where LastSalesDate = #2016-10-08# 

谢谢大家的回答。 迈克尔

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多