首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

比较datetime列时,MySQL返回0结果

在比较datetime列时,MySQL返回0结果可能是由于以下原因之一:

  1. 数据类型不匹配:确保比较的两个datetime列的数据类型相同。如果其中一个列的数据类型是date或timestamp,而另一个列是datetime,则可能会导致比较结果为0。可以使用CAST()函数将数据类型转换为相同的datetime类型。
  2. 数据格式不正确:确保比较的datetime列的数据格式正确。datetime列的正确格式为'YYYY-MM-DD HH:MM:SS',其中YYYY表示年份,MM表示月份,DD表示日期,HH表示小时,MM表示分钟,SS表示秒。如果数据格式不正确,比较结果可能为0。
  3. 数据值不匹配:检查比较的datetime列的实际数据值。如果两个列的数据值不匹配,比较结果可能为0。确保数据值正确并且在比较时符合预期。
  4. 时区问题:MySQL的datetime列存储的是不带时区信息的日期和时间。如果比较的datetime列涉及不同的时区,可能会导致比较结果为0。在比较之前,可以使用CONVERT_TZ()函数将datetime列转换为相同的时区。

总结起来,当比较datetime列时,确保数据类型匹配、数据格式正确、数据值匹配,并注意时区问题。如果问题仍然存在,可能需要进一步检查数据库配置和查询语句是否正确。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL 中的日期时间类型

日期时间类型中包含以下几种数据类型: DATE TIME DATETIME TIMESTAMP YEAR 各类型都有具体的取值范围,超出或非法的其他值MySQL 会回退到 0。...MySQL 按标准格式 YYYY-MM-DD hh:mm:ss[.fraction] 输出日期时间,但设置或进行日期时间相关的比较却支持灵活的多种格式,会自动解析。...所以 MySQL 是支持将月日设置成 0,比如 2019-00-00。但这种情况下就无法从日期相关的操作中获得到准确的结果,比如使用 DATE_SUB() 或 DATE_ADD() 函数。...TIMESTAMP 和 DATETIME的定义,如果指定了小数部分,那么在配合使用 CURRENT_TIMESTAMP(fsp) ,这个小数部分的精度需要保持一致。...其他可返回合法值的方法,比如 NOW()。

6.8K20
  • python查询MySQL写入Excel

    = conn.cursor()  # 创建游标         cur.execute(sql)  # 执行sql命令         result = cur.fetchall()  # 获取执行的返回结果...由于我在创建游标,指定了pymysql.cursors.DictCursor,它返回的每一行数据,都是一个字典。 因此,通过dict.keys()就可以获取表字段了。...= conn.cursor()  # 创建游标         cur.execute(sql)  # 执行sql命令         result = cur.fetchall()  # 获取执行的返回结果...        row0 = result[0]         # 字段         column_names = list(row0)         # 写第一行,也就是所在的行         ...        row0 = result[0]         # 字段         column_names = list(row0)         # 写第一行,也就是所在的行

    9.2K30

    第四章《MySQL的数据类型和运算符》

    的取值范围小于DATETIME; (3)默认情况下,当插入一条记录但并没有指定TIMESTAMP这个MySQL默认会把TIMESTAMP设为当前时间 3.字符串; 3.1 CHAR和VARCHAR...(1)当操作数为0返回1; (2)当操作数不为0返回0; (3)当操作数为NULL返回NULL; ?...2.逻辑与(and或&&); (1)当所有操作数均为非0值,并且不为NULL返回1 (2)当一个或多个操作数为0返回0; (3)当操作数里没有0但是有NULL,返回NULL; ?...3.逻辑或(OR或||); (1)任意一个操作数为非零值,且不是NULL,结果为1.否则为0; (2)当两个操作数均为NULL,或者一个为0一个为NULL返回NULL; ?...0; 比如10的二进制是1010,14的二进制是1110,他两个的位或运算结果1110 ,转换成十进制就是14 2.位与运算符(&):对应二进制全为1结果位为1,否则为0; 3.位异或(^):对应的二进制位不相同时

    99910

    第四章《MySQL的数据类型和运算符》

    的取值范围小于DATETIME; (3)默认情况下,当插入一条记录但并没有指定TIMESTAMP这个MySQL默认会把TIMESTAMP设为当前时间 3.字符串; 3.1 CHAR和VARCHAR...(1)当操作数为0返回1; (2)当操作数不为0返回0; (3)当操作数为NULL返回NULL; 2.逻辑与(and或&&); (1)当所有操作数均为非0值,并且不为NULL...返回1 (2)当一个或多个操作数为0返回0; (3)当操作数里没有0但是有NULL,返回NULL; 3.逻辑或(OR或||); (1)任意一个操作数为非零值,且不是NULL,...结果为1.否则为0; (2)当两个操作数均为NULL,或者一个为0一个为NULL返回NULL; 4.逻辑异或:(XOR) (1)任何一个操作数为NULL,返回NULL; (2)对于非...1,否则为0; 比如10的二进制是1010,14的二进制是1110,他两个的位或运算结果1110 ,转换成十进制就是14 2.位与运算符(&):对应二进制全为1结果位为1,否则为0; 3.位异或

    85920

    MySQL中timestamp和datetime,你用的对么?

    MySQL中,时间是咱们用到最多的类型,建表,对于时间字段类型的选择,你是如何选择的呢?有人会说timestamp,也有人会说datetime,那么我们到底如何选择呢,它们又有什么区别?...查询,将其又转化为客户端当前时区进行返回。 对于DATETIME,不做任何改变,基本上是原样输入和输出。...(id int,hiredate datetime); Query OK, 0 rows affected (0.01 sec) mysql> insert into test1 values(1,'...通过结果可以看出,test中返回的时间提前了8个小时,而test1中时间则不变。这充分验证了两者的区别。...“explicit_defaults_for_timestamp”的值依旧是OFF,也有两种方法可以禁用 1> 用DEFAULT子句该该指定一个默认值 2> 为该指定NULL属性

    3.1K30

    第11章、数据类型

    这个可选的显示宽度可以被应用程序用来显示宽度小于为该指定的宽度的整数值,方法是用空格填充它们。(也就是说,这个宽度出现在结果返回的元数据中,无论是否使用都取决于应用程序。)...要 MySQL 5.7中,新增DATETIME的支持设置默认值和自动更新。在之前的版本,你如果尝试设置将会得到一个错误。...CHAR长度可以是0到255之间的任何值。CHAR 存储值,它们将空格填充到指定的长度。...BINARY的填充字节是0x00。字节在比较中很重要,包括ORDER BY与DISTINCT操作。0x00与空格在比较是不一样的,0x00要小于空格。...使用磁盘会导致性能损失,因此只有在确实需要才在查询结果中包含 BLOB或TEXT。例如,避免使用 SELECT *,它会选择所有

    1.7K20

    表的数据类型

    ~ 18446744073709551615 注意:为该类型指定宽度,仅仅只是指定查询结果的显示宽度,与存储范围无关,存储范围如下  其实我们完全没必要为整数类型指定显示宽度,使用默认的就可以了...插入两位年份,<=69,以20开头,比如50, 结果2050 >=70,以19开头,比如71,结果1971 MariaDB [db1]> create table...而在读取该,MySQL 数据库会自动将 填充的字符删除。...这时再通过 SELECT 语句进行查询,得到的结果是“abc ”,abc 右边有 7 个填充字符 0x20,并通 过 HEX 函数得到了验证。这次 LENGTH 函数返回的长度为 10。...需要注意的是,LENGTH 函数返回的是字节长度,而不是字符长度。对于多字节字符集,CHAR(N)长度的最多 可占用的字节数为该字符集单字符最大占用字节数 *N。

    4.5K70

    数据库之数据类型详解

    MySQL中默认的日期格式是yyyy-mm-dd; 用MySQL的内建类型DATE、TIME、DATETIME来存储时间,而不是使用字符串; 当数据格式为TIMESTAMP和DATETIME,可以用CURRENT_TIMESTAMP...作为默认(MySQL5.6以后), MySQL会自动返回记录插入的确切时间; TIMESTAMP是UTC时间戳,与时区相关; DATETIME的存储格式是一个YYYYMMDD HH:MM:SS的整数,与时区无关...1、char和varchar CHAR(M) 为固定长度的字符串,在定义指定字符串列长,当保存在右侧填充空格以达到指定的长度,M 表示长度,取值范围是 0~255 个字符,例如,CHAR(4) 定义了一个固定长度的字符串列...,其包含的字符个数最大为 4,当检索到 CHAR 值,尾部的空格将被删掉; VARCHAR(M) 为可变长度的字符串,M 表示最大长度,取值范围是 0~65535 ,VARCHAR 的最大实际长度由最长的行的大小和使用的字符集确定...; 如果插入 SET 字段中值有重复,则 MySQL 自动删除重复的值,插入 SET 字段的值的顺序并不重要,MySQL 会在存入数据库,按照定义的顺序显示。

    3.5K30

    Mysql学习笔记,持续记录

    使用null和任何数值去做比较判断,得到的都是false;只能使用is null和is not null进行操作; 3. datetime的使用 mysql进行日期比较,日期格式必须是标准的YYYY-MM-DD...,小于10的日期需要加0; 在sql语句中进行时间比较的时候,时间值也需要和字符串一样使用单、双引号包括。...,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。...如果第一个参数是一个常数字符串,而第二个是type SET,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回值为 0 。...如果未给出该模式,被零除MySQL返回NULL。如果用到INSERT IGNORE或UPDATE IGNORE中,MySQL生成被零除警告,但操作结果为NULL。

    1.2K50

    MySQL排序规则导致无法命中索引问题

    为每条记录检查范围(索引映射:N)(JSON 属性:message) MySQL 没有找到好的索引可以使用,但发现在知道前面表的值后,可能会使用某些索引。...user表设计: vehicle表设计: 两表字符集均为utf8mb4,不会出现因字符集不同导致隐式转换的问题,那么对比排序规则发现两表的排序规则是不同的,排序规则不一致MySQL同样会进行强制类型转换...翻译为中文就是: ● 两个参数至少有一个是 NULL 比较结果也是 NULL,例外是使用 对两个 NULL 做比较时会返回 1,这两种情况都不需要做类型转换 ● 两个参数都是字符串,会按照字符串来比较...,不做类型转换 ● 两个参数都是整数,按照整数来比较,不做类型转换 ● 十六进制的值和非数字做比较,会被当做二进制串 ● 有一个参数是TIMESTAMP或 DATETIME,并且另外一个参数是常量...decimal 转换为浮点数进行比较 ● 所有其他情况下,两个参数都会被转换为浮点数再进行比较 知识扩展引用自:小米信息部技术团队-浅析MySQL的隐式转换

    31430

    DBA的福音,SQL审核利器-goinception

    goInception是一个集审核、执行、备份及生成回滚语句于一身的MySQL运维工具, 通过对执行SQL的语法解析,返回基于自定义规则的审核结果,并提供执行和备份及生成回滚语句的功能。...check_datetime_default 不能同时有两个timestamp类型的,如果是datetime类型,则不能有两个指定DEFAULT CURRENT_TIMESTAMP及ON UPDATE...5个 max_key_parts 主键索引数限制 max_primary_key_parts 主键必须使用int或bigint enable_pk_columns_only_int 建索引,指定的必须存在...索引中的,不能重复 BLOB不能建做KEY 索引长度不能超过767或3072,由实际mysql的innodb_large_prefix决定 索引名不能是PRIMARY 索引名不能重复 默认值...每个都需要定义默认值,除了自增列/主键/JSON/计算/以及大字段之外 check_column_default_value 自增列 检查项 相关配置项 建表,自增列初始值为1 check_autoincrement_init_value

    2.3K40

    mysql数据库优化(二)

    ', None, None, 0, '2.0.dev', 0, datetime.datetime(2018, 5, 3, 17, 13, 37), None, 1) 1 and nickname="AAA1...8.对于数据的类型在搜索尽量不要改变,如 id 是int类型,不要 用 varchar类型搜索 where id = '3'  应该用 where id =3    减少mysql在内部转换的操作...但是当只是select 索引,直接从索引中取数据,不会再去读表的 页。...1.利用limit分页                 2.数据库查询返回更少的数据,避免返回不必要的数据                 3.对于不经常select的大数据量字段,比如request...5.用 >=代替 >;如>=3取出3及以上进行比较,但是>2会取出2及以上进行比较,所以 > 比 >=多比较了一次                 6.不用在索引中使用 not,is null, is

    1.1K20

    MySQL字段类型的详细解释

    这意味着如果你乘2个大整数(或来自于返回整数的函数), 如果结果大于9223372036854775807,你可以得到意外的结果。...MySQL以'YYYY-MM-DD'格式来显示DATE值, 但是允许你使用字符串或数字把值赋给DATEDATETIME 一个日期和时间组合。...MySQL以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值, 但是允许你使用字符串或数字把值赋给DATETIME。 TIMESTAMP[(M)] 一个时间戳记。...MySQL以YYYY格式来显示YEAR值,但是允许你把使用字符串或数字值赋给YEAR。 (YEAR类型在MySQL3.22中是新类型。)...CHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词。 NATIONAL CHAR(短形式NCHAR)是ANSI SQL的方式来定义CHAR应该使用缺省字符集。

    2.3K20

    MySQL 中处理日期和时间(五)

    Datetime 中选择日期 数据库从业人员在尝试查询日期遇到的首要挑战之一是大量时间数据存储为 DateTime 和 Timestamp 数据类型。...例如,Sakila 示例数据库将 customer 表的 create_date 存储为 Datetime: 因此,如果我们尝试选择在特定日期创建的客户记录,就不能只提供日期值: 一个简单的解决方法是使用...DATE() 函数将 Datetime 值转换为日期: 现在,任何匹配日期的记录都将被返回。...在 MySQL 中,这样做的方法是使用 DATEDIFF() 函数。它接受两个日期值并返回它们之间的天数。...使用舍入可以在结果中显示整数周: ROUND(DATEDIFF(end_date, start_date)/7, 0) AS weeksout 对于其他时间段,TIMESTAMPDIFF() 函数可能会有所帮助

    4.2K10

    MySQL字段类型的详细解释

    这意味着如果你乘2个大整数(或来自于返回整数的函数), 如果结果大于9223372036854775807,你可以得到意外的结果。...MySQL以'YYYY-MM-DD'格式来显示DATE值, 但是允许你使用字符串或数字把值赋给DATEDATETIME 一个日期和时间组合。...MySQL以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值, 但是允许你使用字符串或数字把值赋给DATETIME。 TIMESTAMP[(M)] 一个时间戳记。...MySQL以YYYY格式来显示YEAR值,但是允许你把使用字符串或数字值赋给YEAR。 (YEAR类型在MySQL3.22中是新类型。)...CHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词。 NATIONAL CHAR(短形式NCHAR)是ANSI SQL的方式来定义CHAR应该使用缺省字符集。

    2.1K90

    mediumtext_mysql数据类型介绍(含text,longtext,mediumtext说明) | 学步园

    注意,当两个参数是INTEGER值,-、+和*将使用BIGINT运算!这意味着如果你乘2个大整数(或来自于返回整数的函数),如果结果大于9223372036854775807,你可以得到意外的结果。...MySQL以’YYYY-MM-DD’格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATEDATETIME一个日期和时间组合。...MySQL以’YYYY-MM-DD HH:MM:SS’格式来显示DATETIME值,但是允许你使用字符串或数字把值赋给DATETIME。TIMESTAMP[(M)]一个时间戳记。...CHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词。NATIONAL CHAR(短形式NCHAR)是ANSI SQL的方式来定义CHAR应该使用缺省字符集。...注意:当值被存储,尾部的空格被删除(这不同于ANSI SQL规范)。M的范围是1 ~ 255个字符。 VARCHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词值。

    1.8K10
    领券