当你需要同时包含日期和时间信息的值时则使用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数据类型是什么、数据库中 日期的几种表示方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)