MySQL日期函数datetime与timestamp的3大区别

相同: 显示格式一致:YYYY-MM-DD HH:MM:SS;

不同:

范围: datetime支持的范围为’1000-01-01 00:00:00′到’9999-12-31 23:59:59′

TIMESTAMP值不能早于1970或晚于2037

储存:

TIMESTAMP

1.4个字节储存(Time stamp value is stored in 4 bytes)
2.值以UTC格式保存( it stores the number of milliseconds)
3.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

timestamp列类型timestamp值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。

  timestamp值显示尺寸的格式如下表所示:
         +-------------------+------------------------+
     | 列类型       | 显示格式            |
     | timestamp(14) | yyyymmddhhmmss | 
     | timestamp(12) | yymmddhhmmss  |
     | timestamp(10) | yymmddhhmm    |
     | timestamp(8) | yyyymmdd            |
     | timestamp(6) | yymmdd          |
     | timestamp(4) | yymm            |
     | timestamp(2) | yy                |
     +-------------------+-------------------------+

  “完整”timestamp格式是14位,但timestamp列也可以用更短的显示尺寸创造

  最常见的显示尺寸是6、8、12、与14。

  你可以在创建表时指定一个任意的显示尺寸,但是定义列长为0或比14大均会被强制定义为列长14。

  列长在从1~13范围的奇数值尺寸均被强制为下一个更大的偶数。

  列如:

  定义字段长度   强制字段长度

  timestamp(0) -> timestamp(14)
  timestamp(15)-> timestamp(14)
  timestamp(1) -> timestamp(2)
  timestamp(5) -> timestamp(6)

  所有的timestamp列都有同样的存储大小,使用被指定的时期时间值的完整精度(14位)存储合法的值不考虑显示尺寸。

  不合法的日期,将会被强制为0存储

datetime

1.8个字节储存(8 bytes storage)
2.实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)
3.与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)

方法一:

 

你也可以:
select * from t1 where unix_timestamp(time1) > unix_timestamp('2011-03-03 17:39:05') and unix_timestamp(time1) < unix_
timestamp('2011-03-03 17:39:52');
就是用unix_timestamp函数,将字符型的时间,转成unix时间戳。个人觉得这样比较更踏实点儿。

 

方法二:

 

time1 between '2011-03-03 17:39:05' and '2011-03-03 17:39:52';

 

方法三:

可以讲datetime类型转换成date类型再进行比较
例如:convert(date,表名.datetime列名) >= convert(date,表名.datetime列名)

 

三种方法待求证,总之是不要用字符串这么直接比

默认值: TIMESTAMP 默认值不为空,可以设置为默认当前时间, NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
datetime 默认值可以设置为空

时间: 2024-09-26 03:13:34

MySQL日期函数datetime与timestamp的3大区别的相关文章

MySQL中的datetime与timestamp比较

文将通过实例比较MySQL中的datetime与timestamp,虽然这两种方法其实表示同一种类型,但还是有一定的区别. 相同 显示 TIMESTAMP列的显示格式与DATETIME列相同.换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS. 不同 范围 datetime 以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值.支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'TIMESTAM

Mysql中的Datetime和Timestamp比较_Mysql

mysql中用于表示时间的三种类型date, datetime, timestamp (如果算上int的话,四种) 比较容易混淆,下面就比较一下这三种类型的异同 相同点 都可以用于表示时间 都呈字符串显示 不同点 1.顾名思义,date只表示'YYYY-MM-DD'形式的日期,datetime表示'YYYY-MM-DD HH:mm:ss'形式的日期加时间,timestamp与datetime显示形式一样. 2.date和datetime可表示的时间范围为'1000-01-01'到'9999-12

mysql日期函数的使用

对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型. 这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准.

Mysql日期和时间函数总结

一.MySQL 获得当前日期时间函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() current_time

php Mysql日期和时间函数集合_php技巧

收集的比较全的Mysql日期和mysql时间函数DATE_FORMAT(date,format)  根据format字符串格式化date值.下列修饰符可以被用在format字符串中: %M 月名字(January--December)  %W 星期名字(Sunday--Saturday)  %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等.)  %Y 年, 数字, 4 位  %y 年, 数字, 2 位  %a 缩写的星期名字(Sun--Sat)  %d 月份中的天数, 数字(00

mYsql日期和时间函数不求人_Mysql

对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型.  这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内:  mysql> SELECT something FROM table  WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date)  返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC

php mysql日期操作函数

php int值: time():是返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数. 我们想要获得1970 年 1 月 1 日到 2012-2-10的秒数可以通过strtotime()来实现:即:strtotime('2012-2-10'); date值: string date ( string format [, int timestamp] ) 关于date()函数可参考 http://www.111cn.net/phper/php

MySQL中datetime与timestamp用法比较

区别对比 储存 TIMESTAMP 1.4个字节储存(Time stamp value is stored in 4 bytes) 2.值以UTC格式保存( it stores the number of milliseconds) 3.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区. datetime 1.8个字节储存(8 bytes storage) 2.实际格式储存(Just stores what you have stored and retrieves the sa

常用的MySQL日期时间函数(1/2)

 代码如下 复制代码 mysql> SELECT something FROM table  WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;  DAYOFWEEK(date)  返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准.   代码如下 复制代码 mysql> select DAYOFWEEK('1998-02-03');  -> 3  WEEKDAY(date)  返回dat