如果怕麻烦, 可以尝试把 输入的 字符串格式的日期, 转换为 日期类型
例如你 用户界面上输入的是: 2011-06-21 14:53:33
那么 SQL 语句里面,可以这么写:
STR_TO_DATE('2011-06-21 14:53:33', '%Y-%m-%d %k:%i:%s' ) > 数据库表里面的时间字段。
注: STR_TO_DATE 函数的第2个参数里面的字符说明:
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。
所有的其他字符不做解释
0
先理解下格式问题
要理解两种格式,一是mysql内部使用和存储时使用的格式,另一个是用户显示的格式;
存储格式:mysql保存日期时间值时使用的CCYY-MM-DD格式遵循ISO
8601标准;
显示格式:显示在输出界面上的格式,可以使用DATA_FORMAT()或TIME_FORMAT()函数来设置和转换;
1
转换和处理
1)提交数据,一是使用标准格式让其自动识别,二是对输入值进行格式指定和转换
insert
into
t
(d)
values('2012-01-01');
#使用默认ansi标准格式,让数据库自动识别字串为日期;
insert
into
t
(d)
values(
STR_TO_DATE('2012/February/01',
'%Y/%M/%d')
);
#使用字符转换为日期的函数来处理自定义格式的输入值;
2)查询数据,一是不使用格式(即使用默认的CCYY-MM-DD格式),二是指定输出格式
select
current_date();
#默认格式
select
date_format(current_date(),
''%Y/%M/%d'');
#使用自定义格式,具体参考下date_format的帮助,主要是格式控制符的使用。
2
格式化参数
DATE_FORMAT(),
TIME_FORMAT(),
STR_TO_DATE()这三个函数都接受格式化串作为参数来格式化日期时间
常用的格式化字符:
%Y
4位数字年份
2012
%y
2位数字年份
12
%M
完整英文月份名称,January
-
December
%b
月份名称前三个字母,Jan
-
Dec
%m
2位数字月份
01-12
%c
最小位数字月份
1-12
%d
2位数字日期
01-31
%e
最小位数字日期
1-31
%W
工作日名称
Sunday
-
Saturday
%r
12小时制时间,以AM或PM结尾
%T
24小时制时间
%H
24小时制小时
00-23
%i
2位数字分钟
00-59
%s
2位数字秒数
00-59
%%
%文字字符
1、非要用datetime的话就不能用default而要通过trigger来实现
2、在插入时value用now()函数、或者自行取运行时间
3、字段类型改变为:
datecreated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
datemodified timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
但是其实不可行,因为一个表只能有一个CURRENT_TIMESTAMP,但你有三个字段。
所以当有多个时间可能还是得结合方式2与方式3来综合处理。当然全都用方式2也就不会提出这种问题了。
对日期的格式化主要是javatextDateFormat和javatextSimpleDateFormat,前者是抽象类,后者是实现类
一般要对日期进行格式化使用如下方式
Date date=new Date();
DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
String str=dateFormatformat(date);//将日期以“年-月-日”的方式转成字符串
Date newDate=dateFormatparse(str);//将字符串以“年-月-日”的方式解析成日期
数据库中取日期一般有3种方式
resultSetgetDate(1)//只取日期
resultSetgetTime(1)//只取时间
resultSetgetTimestamp(1)//取日期和时间
javasqlDate与javautilDate的关系是继承关系
javautilDate是父类
javasqlDate是子类
根据Java多态原则,从数据库中取出可以直接将sqlDate赋给utilDate
存入则不行,一般使用new javasqlDate(new javautilDate()getTime());
javasqlDate没有无参构造,只有一个带long型的构造,传入的是1970-1-1 00:00:00开始到当前时间的毫秒数,可以用javautilDate的getTime方法获取
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'。
以上就是关于mysql 数据库中一个 time 以date 类型保存的,格式为(2011-06-21 14:53:33)如何实现同输入时间比较早晚全部的内容,包括:mysql 数据库中一个 time 以date 类型保存的,格式为(2011-06-21 14:53:33)如何实现同输入时间比较早晚、mysql date数据输入的时候 如果是日月年,应该怎么才能识别、mysql 在数据库中设置时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)