mysql 数据库中一个 time 以date 类型保存的,格式为(2011-06-21 14:53:33)如何实现同输入时间比较早晚

mysql 数据库中一个 time 以date 类型保存的,格式为(2011-06-21 14:53:33)如何实现同输入时间比较早晚,第1张

如果怕麻烦, 可以尝试把 输入的 字符串格式日期, 转换为 日期类型

例如你 用户界面上输入的是: 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 在数据库中设置时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存