首页
学习
活动
专区
工具
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.位异或(^):对应的二进制位不相同时

    1K10

    第四章《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.位异或

    86720

    第11章、数据类型

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

    1.7K20

    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.3K30

    表的数据类型

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

    4.6K70

    数据库之数据类型详解

    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 会在存入数据库时,按照定义的顺序显示。

    4.3K30

    MySQL底层概述—8.JOIN排序索引优化

    通过循环外层表的行数据,逐个与内层表的所有行数据比较来获取结果。这种算法是最简单的方案,性能也一般,对内循环没优化。...3.MySQL排序之索引排序(Using index)(1)MySQL中的两种排序方式(2)索引排序(1)MySQL中的两种排序方式一.索引排序通过索引顺序扫描直接返回有序数据;二.额外排序没用到索引排序就对返回的数据使用文件排序...这样排序后就会直接从内存里返回查询结果了,不用再回表去取数据。MySQL的设计思想:如果内存够,就多利用内存,尽量减少磁盘访问。...比如在等值查询时非第一列时也可利用索引排序(都一样相当于没排序),但范围查询非第一列时,则不可以利用索引排序。...,需注意以下几点:第一个参数指定第一个返回记录行的偏移量,注意从0开始;第二个参数指定返回记录行的最大数目;如果只给定一个参数:它表示返回最大的记录行数目,初始记录行的偏移量是0(而不是1)。

    6710

    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的隐式转换

    35530

    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.5K40

    MySQL字段类型的详细解释

    这意味着如果你乘2个大整数(或来自于返回整数的函数), 如果结果大于9223372036854775807,你可以得到意外的结果。...MySQL以'YYYY-MM-DD'格式来显示DATE值, 但是允许你使用字符串或数字把值赋给DATE列。 DATETIME 一个日期和时间组合。...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数据库优化(二)

    ', 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 中处理日期和时间(五)

    从 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值, 但是允许你使用字符串或数字把值赋给DATE列。 DATETIME 一个日期和时间组合。...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
    领券