数据库中哪种日期存储格式,性能会更好

数据库中哪种日期存储格式,性能会更好,第1张

数据库中日期存储格式有几种,需要根据你的需求抉择:

1、timestamp:既能保证性能又能使用自带时间日期函数

2、int :适合作时间的比较,但是可读性差

3、datetime :适合数据库数据导出,可读性高,但查询性能不高。(不推荐)

4、varchar:不支持时区。(不推荐)

在数据库取出来的时候就转换好

select

getdate()

2006-05-12

11:06:08177

我整理了一下SQL

Server里面可能经常会用到的日期格式转换方法:

举例如下:

select

Convert(varchar(10),getdate(),120)

2006-05-12

select

CONVERT(varchar,

getdate(),

120

)

2006-05-12

11:06:08

select

replace(replace(replace(CONVERT(varchar,

getdate(),

120

),'-',''),'

',''),':','')

20060512110608

select

CONVERT(varchar(12)

,

getdate(),

111

)

2006/05/12

select

CONVERT(varchar(12)

,

getdate(),

112

)

20060512

select

CONVERT(varchar(12)

,

getdate(),

102

)

20060512

其它几种不常用的日期格式转换方法:

select

CONVERT(varchar(12)

,

getdate(),

101

)

0612/2005

select

CONVERT(varchar(12)

,

getdate(),

103

)

12/09/2004

select

CONVERT(varchar(12)

,

getdate(),

104

)

12052006

select

CONVERT(varchar(12)

,

getdate(),

105

)

12-05-2006

select

CONVERT(varchar(12)

,

getdate(),

106

)

12

05

2006

select

CONVERT(varchar(12)

,

getdate(),

107

)

05

12,

2006

select

CONVERT(varchar(12)

,

getdate(),

108

)

11:06:08

select

CONVERT(varchar(12)

,

getdate(),

109

)

0512

2006

1

select

CONVERT(varchar(12)

,

getdate(),

110

)

09-12-2004

select

CONVERT(varchar(12)

,

getdate(),

113

)

12

052006

select

CONVERT(varchar(12)

,

getdate(),

114

)

11:06:08177

to_date()是将字符串转为日期来进行处理的,如果转换为年月日的方式:to_date(‘2021-01-01’,“YYYY-MM-DD”)

得到的结果是:2021-01-01 00:00:00

转换为年月的方式:to_date(‘2021-08’,“YYYY-MM”)

得到的转换结果:2021-08-01 00:00:00

所以用to_date()获取时间范围的时候要注意最后一个月份是获取不到的。

select SUM(data1) as num1,sum(data2) as num2,to_char(date_time,'YYYY-MM') as dateTime from test_data where date_time between to_date('2021-01','YYYY-MM') and to_date('2021-08','YYYY-MM')

GROUP BY dateTime

1

2

1

2

查询结果:

查到的数据为7个月的

to_char():

在进行日期转换的时候,应该是将数据库中所要查询的时间字段转换为字符串来使用。

(date_time字段为日期类型,不能为字符串,如果为字符串,可以先用转为日期类型的)

例如:to_char(to_date(date1,‘yyyy-MM’),‘YYYY-MM’):这里的date1为字符串类型

to_char(date_time,‘YYYY-MM’) between ‘2021-01’ and ‘2021-08’

它获取到的结果为:

2021-01-01 00:00:00,2021-08-31 23:59:59]

select SUM(data1) as num3,sum(data2) as num4,to_char(date_time,'YYYY-MM') as dateTime from test_data where to_char(date_time,'YYYY-MM') between '2021-01' and '2021-08'

GROUP BY dateTime

查询结果:

查询到的数据为8个月的

建议:在查询某一时间范围的数据时,建议使用to_char()比较简单。

文章知识点与官方知识档案匹配

MySQL入门技能树SQL高级技巧CTE和递归查询

29891 人正在系统学习中

点击阅读全文

打开CSDN,阅读体验更佳

To_Date函数用法(转)_nws361的博客_todate

1在使用Oracle的to_date函数来做日期转换时,可能会直觉地采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。如:select to_date('2005-01-01 13:14:20','yyyy-MM

Oracle to_date()函数的用法介绍_weixin_35656623的博客

1 在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用"yyyy-MM-dd HH:mm:ss"的格式作为格式进行转换,但是在Oracle中会引起错误:"ORA 01810 格式代码出现两次"。

数据库中To_date()、to_char()、substr()对时间处理

To_date()、to_char()、substr()对时间处理 YYYY、YYY、YY 分别代表4位、3位、2位的数字年 YEAR 年的拼写 MM 数字月 MONTH 月的全拼 MON 月的缩写 DD 数字日 DAY 星期的全拼 DY 星期的缩写 AM 表示上午或者下午 HH24、HH12 12小时制或24小时制 MI 分钟 SS 秒钟 一、to_date() (时间格式Y

继续访问

To_Date函数用法

spl> select from emp where dates between to_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss') and to_date('2007-06-12 10:00:00', 'yyyy-mm-dd

继续访问

Oracle中的to_date()函数

to_date()与24小时制表示法及mm分钟的显示: 一、在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。 如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd

继续访问

mysql数据库的to_data_MySQL数据库基本知识

数据库基础知识1数据库存储结构11 表是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强。12 表包括 行和列121 行 :被称为数据/记录(data)122 列 :被称为字段(column)13 每个字段都有 名字 数据类型 相关的约束 等属性。14 MySQL的两个引擎① MyISAM 数据库的自带的数据库用,相比较 InnoDB 有自动统计行的特点。平常我

继续访问

oracle 时间函数 TO_DATE

>

显示的格式:年-月-日小时:分钟:秒

相关时间参数:

a-"am"或是"pm"

A-"AM"或是"PM"

d-几日,二位数字,若不足二位则前面补零;如:"01"至"31"

D-星期几,三个英文字母;如:"Fri"

F-月份,英文全名;如:"January"

h-12小时制的小时;如:"01"至"12"

H-24小时制的小时;如:"00"至"23"

g-12小时制的小时,不足二位不补零;如:"1"至12"

G-24小时制的小时,不足二位不补零;如:"0"至"23"

i-分钟;如:"00"至"59"

j-几日,二位数字,若不足二位不补零;如:"1"至"31"

l-星期几,英文全名;如:"Friday"

m-月份,二位数字,若不足二位则在前面补零;如:"01"至"12"

n-月份,二位数字,若不足二位则不补零;如:"1"至"12"

M-月份,三个英文字母;如:"Jan"

s-秒;如:"00"至"59"

S-字尾加英文序数,二个英文字母;如:"th","nd"

t-指定月份的天数;如:"28"至"31"

U-总秒数

w-数字型的星期几,如:"0"(星期日)至"6"(星期六)

Y-年,四位数字;如:"1999"

y-年,二位数字;如:"99"

z-一年中的第几天;如:"0"至"365"

可以自由设定显示的内容,连接符号或是显示位置,例如date("m-dH")或者date("dmY");>等

php中的日期处理

加入时间:2004-12-1817:35:22大小:12KB阅读次数:1405

PHP中的日期处理

转贴:xiaxia日期:2004-05-26人气:9

我正打算用PHP编写一种帮助处理系统。我发现我必须知道处理完最后一位客户的问题后已经过去了多长时间?当我过去用ASP时解决这个问题相当简单,ASP有相应的函数DateDiff可以给出两个日期间间隔多少月、多少天和多少秒。当我搜寻完PHP手册后我发现PHP并没有类似的函数。

本文包含以下内容:

1、得到目前的日期和时间-我们有多少种方式

2、改变日期显示的方式-日期和时间的显示形式

3、转换现在的日期为Unix的时间戳值

4、改变日期

a增加时间

b减去时间

c找出两日期之间的间隔

5、为PHP添加DateAdd函数

6、为PHP添加DateDiff函数

得到目前的日期和时间

在Unix中,时间的表示方式为计算从1970年1月1日零时起所过去的秒数,这称为UNIX时间戳(UnixEpoch)。

如果我们有这样一段的代码:

echotime();

将返回值958905820

而此时的时间为2000年5月21日12时43分。

你也许会说这相当不错。当这对我毫无帮助,或者只有一点帮助。在PHP中,对日期处理的函数都必须用到由time()返回的时间戳值。同时,由于PHP在Unix和Windows系统中均使用同样的时间戳值,这就允许你不需要修改代码即可在不同的系统间移植。另外的一个好处是time()函数返回的是一个整数,你可以将其作为整数字段或文本字段存入数据库,而不必使用特别的日期/时间字段。

你已经基本了解了Unix的时间戳值,现在让我们来展示它的实际用途。

改变日期显示的方式-日期和时间的显示形式

PHP提供两个办法来将Unix的时间戳值转换成为有用的数据。第一个是date()函数。这个函数有两个参数-第一个字符串用于设定你所希望返回的格式,第二个为Unix的时间戳值。

格式化字符串通过一些简单的特殊格式化字符来显示你所希望看到的格式的日期和时间。假设你希望日期以这样的格式显示“18h01Sunday21May”。

我们需要对字符串中的每一部分使用一个特殊格式化字符,你可以从PHP手册中日期和时间函数库中找到。这样的特殊格式化字符数量不少,他们所表示的类似于星期几、月的英文名、用2位或4位数表示的年份,是否是上午(AM)或下午(PM)以及其他。对于这个例子我们需要的特殊字符为:

‘H’-24小时制的小时

‘i’-分钟

‘l’-星期几的英文全名

‘d’-本月的第几日

‘F’-月份的英文全名

因此我们的格式化字符串为”HhildF”,PHP代码为:

echodate("HhildF",time());

当我们执行这段代码,我们发现我们所得到的结果为:

180609Sunday21May

这样的结果看起来有些奇怪。让我们再查一下PHP手册,原来’h’所代表的是12小时制的小时数。这再次证明了一句真理:“计算机只做你所告诉它该做的,而不是你想要它做的”。我们有两个选择。第一个是在h前使用转义字符“”:

echodate("HhildF",time());

我们得到这样的结果:

18h12Sunday21May

这正是我们所要的。但如果我们在一个十分复杂的句子中需要包含日期和时间,我们是否需要对每个字符使用转义字符

答案当然是不。我们使用另一个函数strftime()。

strftime()有两个好处。第一个好处我们并不在本文讨论范围内-如果你使用setlocale()函数,你可以通过strftime得到相应语言的月份的名称。另外的一个好处是你可以将特别的日期和时间的格式化字符包含在你的字符串中。这同时也意味着无论你是否要学习date()函数的所有特殊格式化字符,你都必须学习一整套完全不同的格式化字符。

strftime()工作的方式和date()没有什么不同,除了特殊格式化字符的前面必须添加一个百分号%。如果用strftime()函数,前面例子的代码如下:

echostrftime("%Hh%M%A%d%b",time());

结果为:

18h24Sunday21May

这也许看起来将简化繁,但考虑一下如果你所需要的显示的为"TodayisSunday21May2000Thetimeissomewherecloseto18h24"我想使用date()函数无疑令人感到厌烦。

在开始的时候,我提及我们有两种方式可以从Unix时间戳值中得到有用的数据。我们刚刚了解了date()和strftime()。另一个getdate()。这个函数只需要Unix的时间戳值作为参数,而函数的返回值为日期和时间的数组

根据正在使用哪个部分,Access 提供了几个不同的方法用来设置日期格式。在桌面数据库中的窗体和报表上,日期通常显示在文本框中。只需将文本框的“格式”属性设置为所需的日期格式。在布局视图或设计视图中,按 F4 以显示出“属性表”,然后将“格式”属性设置为预定义的日期格式之一:

或者,输入自定义日期格式。

Access 应用程序显示在"视图",具有相似桌面数据库中的窗体的文本框中的数据。但是,而不是属性表、,通过选择文本框,然后单击格式按钮显示设置格式设置选项。然后,从格式列表中选择所需的格式。

以上就是关于数据库中哪种日期存储格式,性能会更好全部的内容,包括:数据库中哪种日期存储格式,性能会更好、数据库中有哪几种date类型的格式、数据库date类型的日期可以用char写吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存