【问题标题】:compare string to date on mysql在mysql上比较字符串和日期
【发布时间】:2011-02-27 04:56:18
【问题描述】:

在 MySQL 4.0.21-standard 中,我有一个带有日期的表,保存为字符串。

我想将此字符串与我请求中的日期进行比较。

SELECT FE_CLIENT.*
FROM FE_CLIENT
WHERE D_DATFINPUBLI < '2010/06/03'

如何将我的列 date_deb 转换为日期以进行比较?

【问题讨论】:

    标签: mysql string date compare


    【解决方案1】:

    假设 MySQL(如果不是,请重新标记您的问题)

    使用 MySQL STR_TO_DATE 函数将“2010/06/03”设置为 DATETIME 值。

    SELECT FE_CLIENT.*
    FROM FE_CLIENT
    WHERE D_DATFINPUBLI < STR_TO_DATE('2010/06/03','%Y/%m,%d');
    

    如果 D_DATFINPUBLI 还不是 DATETIME 格式,请执行相同的操作。

    编辑:

    SELECT STR_TO_DATE( D_DATFINPUBLI, '%d/%m/%Y %h:%i' ) DD, FE_CLIENT . * 
    FROM FE_CLIENT
    WHERE STR_TO_DATE( D_DATFINPUBLI, '%d/%m/%Y %h:%i' ) < STR_TO_DATE( '04/06/2010', '%d/%m/%Y' ) 
    AND D_CDSTATUPUBLI <> 'EXP'
    ORDER BY D_NIDPUBLI
    

    【讨论】:

    • 您的 SQL 语法有错误。查看与您的 MySQL 服务器版本相对应的手册,了解在 '(D_DATFINPUBLI,'%d/%m/%Y')
    • D_DATFINPUBLI 现在是什么格式?你能发布整个查询吗?
    • SELECT FE_CLIENT.* FROM FE_CLIENT WHERE STR_TO_DATE(D_DATFINPUBLI,'%d/%m/%Y') 'EXP' ORDER BY D_NIDPUBLI D_DATFINPUBLI 在我的表中像这样 '03/06/2010 11:12'
    • 我更新了查询。 MySQL 4.1.1 版中添加了 STR_TO_DATE 函数 - 确保您的数据库版本更高。测试:SELECT STR_TO_DATE('03/06/2010','%d/%m/%Y')
    • 只是这条线对我不起作用 SELECT STR_TO_DATE(D_DATFINPUBLI, '%d/%m/%Y %h:%i'),FE_CLIENT.* FROM FE_CLIENT;
    【解决方案2】:

    在查询执行之前将你的字符串格式化为正确的格式

    或者,如果你想严格使用 mysql,

    WHERE D_DATFINPUBLI < replace('2010/06/03','/','-')
    

    编辑:

    D_DATFINPUBLI 字段必须为date 类型且格式为2010-06-03

    【讨论】:

    • D_DATFINPUBLI 在我的表中像这样 '03/06/2010 11:12' 我想要 WHERE D_DATFINPUBLI
    • 啊哈哈哈!因此,您的数据库中没有日期。将此字段中的值更改为正确的日期格式
    • 我无法在我的数据库中更改此数据
    • @Mercer 不,你可以。您只是懒惰,因为您不了解这种变化的重要性。别傻了。这是唯一的解决方案
    • 如果我更改了我应该在所有代码源中加入的字段,不是我决定旧应用程序
    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 2012-10-19
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    相关资源
    最近更新 更多