数据库中DATETIME,DATE和TIMESTAMP类型 的区别

数据库中DATETIME,DATE和TIMESTAMP类型 的区别,第1张

当你需要同时包含日期和时间信息的值时则使用DATETIME类型。MySQL以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。(“支持”表示尽管先前的值可能工作,但没有保证)。

当你只需要日期值而不需要时间部分时应使用DATE类型。MySQL用'YYYY-MM-DD'格式检索和显示DATE值。支持的范围是'1000-01-01'到 '9999-12-31'。

TIMESTAMP列类型的属性不固定,取决于MySQL版本和服务器运行的SQL模式。这些属性将在本节后面描述。

可以使用任何常见格式指定DATETIME、DATE和TIMESTAMP值:

'YYYY-MM-DD HH:MM:SS'或'YY-MM-DD HH:MM:SS'格式的字符串。允许“不严格”语法:任何标点符都可以用做日期部分或时间部分之间的间割符。例如,'98-12-31 11:30:45'、'981231 11+30+45'、'98/12/31 113045'和'98@12@31 11^30^45'是等价的。

'YYYY-MM-DD'或'YY-MM-DD'格式的字符串。这里也允许使用“不严格的”语法。例如,'98-12-31'、'981231'、'98/12/31'和'98@12@31'是等价的。

'YYYYMMDDHHMMSS'或'YYMMDDHHMMSS'格式的没有间割符的字符串,假定字符串对于日期类型是有意义的。例如,'19970523091528'和'970523091528'被解释为'1997-05-23 09:15:28',但'971122129015'是不合法的(它有一个没有意义的分钟部分),将变为'0000-00-00 00:00:00'。

'YYYYMMDD'或'YYMMDD'格式的没有间割符的字符串,假定字符串对于日期类型是有意义的。例如,'19970523'和'970523'被解释为 '1997-05-23',但'971332'是不合法的(它有一个没有意义的月和日部分),将变为'0000-00-00'。

DATETIME类型是Date和Time的组合。支持的范围从'1000-01-01 00:00:00000000' 到'9999-12-31 23:59:59999999'。

MySQL以'YYYY-MM-DD hh:mm:ss[fraction]'的格式显示DATETIME类型。但允许使用字符串或数字向DATETIME列赋值。字面常量转换规则如下:

表中的任何TIMESTAMP或DATETIME列都可以具有自动初始化和更新属性。

1、格式为“YYYY-MM-DD hh:mm:ss”或“YY-MM-DD hh:mm:ss”字符串。任何标点字符都可以用作日期部分或时间部分之间的分隔符。

2、在日期和时间部分和小数秒部分之间识别的唯一分隔符是小数点。

3、日期和时间部分可以用T而不是空格分隔。例如,'2012-12-31 11:30:45' '2012-12-31 t11:30:45 '是等价的。

4、格式为'YYYYMMDDhhmmss'或'YYMMDDhhmmss'无分隔符的字符串,只要该字符串具有日期的意义。例如,'20070523091528'和'070523091528'被解释为'2007-05-23 09:15:28',但'071122129015'是非法的(它有一个无意义的分钟部分),会变成'0000-00-00 00:00:00'。

5、YYYYMMDDhhmmss或YYMMDDhhmmss格式的数字,只要该数字作为日期有意义。例如,19830905132800和830905132800被解释为“1983-09-05 13:28:00”。

datetime mysql 格式化的方法是:

要插入当前日期(而不是时间),则可以使用CURDATE()MySQL的内置函数。语法是INSERT INTO yourTableName values(curdate())。

或者,如果您想同时添加日期和时间,则可以使用NOW()MySQL的内置函数。语法是INSERT INTO yourTableName values(now())。

为了理解这两种语法,让我们首先创建一个表。创建表的查询如下mysql> create table NowAndCurdateDemo

−> (。

−> YourDueDate datetime。

−> )。

实现这两个功能以插入当前日期和日期时间表。查询插入日期如下mysql> insert into NowAndCurdateDemo values(curdate())。

mysql> insert into NowAndCurdateDemo values(now())。

Mysql中经常用来存储日期的数据类型有三种:Date、Datetime、Timestamp。

1Date数据类型:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”。

2Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。

3Timestamp类型:也是存储既有日期又有时间的数据。存储和显示的格式跟Datetime一样。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。

扩展资料

切记不要用字符串存储日期

这种存储日期的方式的优点还是有的,就是简单直白,容易上手。但是,这是不正确的做法,主要会有下面两个问题:

1、字符串占用的空间更大。

2、字符串存储的日期比较效率比较低(逐个字符进行比对),无法用日期相关的 API 进行计算和比较。

DateTime 类型没有时区信息的

DateTime 类型是没有时区信息的(时区无关) ,DateTime 类型保存的时间都是当前会话所设置的时区对应的时间。

当你的时区更换之后,比如你的服务器更换地址或者更换客户端连接时区设置的话,就会导致你从数据库中读出的时间错误。不要小看这个问题,很多系统就是因为这个问题闹出了很多笑话。

Timestamp 和时区有关。Timestamp 类型字段的值会随着服务器时区的变化而变化,自动换算成相应的时间,说简单点就是在不同时区,查询到同一个条记录此字段的值会不一样。

如果你是用拼接字符串的方式写入的话

string Sql = "Insert into TableName(DateAndTime) values(@DateAndTime)";

public object GetDBDate(string source)

{

if (source == null || source == "") return DBNullValue;

try

{

return DateTimeParse(source);

}

catch { return DBNullValue;}

}

不知道你数据库的 *** 作是拼接字符串,还是用DbParameter,但是你知道

DbParameter有个DBNullValue

拼接有null就可以了。

中间对时间的值进行一下判断再插入数据库

//计算datetime所属星座

$dateTime = '2011-10-09 10:00:00';//数据库查询出的时间

$dateTime = substr($dateTime,5,5);//截取出月份与日期

// echo $dateTime;

$dateArray = explode("-",$dateTime);//将字符串分割成数组

$month = $dateArray[0];//月份

$day = $dateArray[1];//日期

if($month=='02'&&$day>=19||$month=='03'&&$day<=20)

{

$constellation = "双鱼座";

}

elseif($month=='03'&&$day>=21||$month=='04'&&$day<=19)

{

$constellation = "白羊座";

}elseif($month=='04'&&$day>=20||$month=='05'&&$day<=20)

{

$constellation = "金牛座";

}elseif($month=='05'&&$day>=21||$month=='06'&&$day<=21)

{

$constellation = "双子座";

}elseif($month=='06'&&$day>=22||$month=='07'&&$day<=22)

{

$constellation = "巨蟹座";

}elseif($month=='07'&&$day>=23||$month=='08'&&$day<=22)

{

$constellation = "狮子座";

}elseif($month=='08'&&$day>=23||$month=='09'&&$day<=22)

{

$constellation = "处女座";

}elseif($month=='09'&&$day>=23||$month=='10'&&$day<=23)

{

$constellation = "天秤座";

}elseif($month=='10'&&$day>=24||$month=='11'&&$day<=21)

{

$constellation = "天蝎座";

}elseif($month=='11'&&$day>=22||$month=='12'&&$day<=21)

{

$constellation = "射手座";

}elseif($month=='12'&&$day>=22||$month=='01'&&$day<=19)

{

$constellation = "摩羯座";

}elseif($month=='01'&&$day>=20||$month=='02'&&$day<=18)

{

$constellation = "水瓶座";

把那个字段的数据类型换成字符型 也就是Varchar 或者Nvarchar这种是不会变的或都变成SmallDateTime这种类型

再有取值的时候也要用DateTime类型来取

原来的应该是DateTime类型的自动长度就是那样就算只赋值年月也会自动把时分秒赋上值

以上就是关于数据库中DATETIME,DATE和TIMESTAMP类型 的区别全部的内容,包括:数据库中DATETIME,DATE和TIMESTAMP类型 的区别、datetime数据类型是什么、数据库中 日期的几种表示方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9687060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存