首页 > 数据库 >Oracle - 'yyyy-mm-dd' & 'yyyymmdd'

Oracle - 'yyyy-mm-dd' & 'yyyymmdd'

时间:2023-04-14 12:06:32浏览次数:40  
标签:string mm dd DateTime yyyy ToString Oracle


 

oracle中日期格式'yyyy-mm-dd'和'yyyymmdd'的区别

 

对于年月日中"日"是个位的情况下,处理不一样,'yyyymmdd'格式没问题,而式'yyyy-mm-dd'格式则不行,请看:

 

SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

 

Session altered.

 

SQL> select to_date('2007059','yyyy-mm-dd hh24:mi:ss') from dual;

select to_date('2007059','yyyy-mm-dd hh24:mi:ss') from dual

                 *

ERROR at line 1:

ORA-01861: literal does not match format string

 

 

SQL> select to_date('2007059','yyyy-mm-dd') from dual;

select to_date('2007059','yyyy-mm-dd') from dual

                 *

ERROR at line 1:

ORA-01861: literal does not match format string

 

 

SQL> select to_date('2007059','yyyymmdd')   from dual;

 

TO_DATE('2007059','

-------------------

2007-05-09 00:00:00

 

 

——————————————————————————————————————

日期格式化{0:yyyy-MM-dd HH:mm:ss.fff}和{0:yyyy-MM-dd hh:mm:ss.fff}的区别

{0:yyyy-MM-dd HH:mm:ss.fff}:使用24小时制格式化日期

{0:yyyy-MM-dd hh:mm:ss.fff}:使用12小时制格式化日期

 

以下同理,从左至右分别为-年-月-日 时:分:秒.毫秒

{0:yyyy-MM-dd HH:mm:ss zzz}

{0:yyyy-MM-dd HH:mm:ss.ff zzz}

{0:yyyy-MM-dd HH:mm:ss.fff zzz}

{0:yyyy-MM-dd HH:mm:ss.ffff zzz}

 

以下测试代码

//---假设时间为-2009-03-17 16:50:49.92

object objValue2 = Business.Services.ExecuteScalar(sqliteconnstring, "Select LastUpdate From CmItemClass2 order by LastUpdate desc limit 0,1");

string lastUpdate2 = objValue2 == null ? string.Empty : string.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", objValue2); //--输出2009-03-17 16:50:49.920

string lastUpdate3 = objValue2 == null ? string.Empty : string.Format("{0:yyyy-MM-dd hh:mm:ss.fff}", objValue2); //--输出2009-03-17 04:50:49.920

 

 

//--------------------

y 将指定 DateTime 对象的年份部分显示为位数最多为两位的数字。忽略年的前两位数字。如果年份是一位数字 (1-9),则它显示为一位数字。

yy 将指定 DateTime 对象的年份部分显示为位数最多为两位的数字。忽略年的前两位数字。如果年份是一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。

yyyy 显示指定 DateTime 对象的年份部分(包括世纪)。如果年份长度小于四位,则按需要在前面追加零以使显示的年份长度达到四位。

 

z 仅以整小时数为单位显示系统当前时区的时区偏移量。偏移量总显示为带有前导或尾随符号(零显示为“+0”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值的范围是 –12 到 +13。如果偏移量为一位数 (0-9),则将其显示为带合适前导符号的一位数。该时区的设置指定为 +X 或 –X,其中 X 是相对 GMT 以小时为单位的偏移量。所显示的偏移量受夏时制的影响。

zz 仅以整小时数为单位显示系统当前时区的时区偏移量。偏移量总显示为带有前导或尾随符号(零显示为“+00”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值范围为 –12 到 +13。如果偏移量为单个数字 (0-9),则将其格式化为前面带有 0 (01-09) 并带有适当的前导符号。该时区的设置指定为 +X 或 –X,其中 X 是相对 GMT 以小时为单位的偏移量。所显示的偏移量受夏时制的影响。

zzz, zzz(外加任意数量的附加“z”字符)以小时和分钟为单位显示系统当前时区的时区偏移量。偏移量总是显示为带有前导或尾随符号(零显示为“+00:00”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时和分钟数。值范围为 –12 到 +13。如果偏移量为单个数字 (0-9),则将其格式化为前面带有 0 (01-09) 并带有适当的前导符号。该时区的设置指定为 +X 或 –X,其中 X 是相对 GMT 以小时为单位的偏移量。所显示的偏移量受夏时制的影响。

 

 

: 时间分隔符。

/ 日期分隔符。

" 带引号的字符串。显示转义符 (/) 之后两个引号之间的任何字符串的文本值。

' 带引号的字符串。显示两个“'”字符之间的任何字符串的文本值。

%c 其中 c 是标准格式字符,显示与格式字符关联的标准格式模式。

\c 其中 c 是任意字符,转义符将下一个字符显示为文本。在此上下文中,转义符不能用于创建转义序列(如“\n”表示换行)。

任何其他字符 其他字符作为文本直接写入输出字符串。

 

向 DateTime.ToString 传递自定义模式时,模式必须至少为两个字符长。如果只传递“d”,则公共语言运行库将其解释为标准格式说明符,这是因为所有单个格式说明符都被解释为标准格式说明符。如果传递单个“h”,则引发异常,原因是不存在标准的“h”格式说明符。若要只使用单个自定义格式进行格式化,请在说明符的前面或后面添加一个空格。例如,格式字符串“h”被解释为自定义格式字符串。

 

下表显示使用任意值 DateTime.Now(该值显示当前时间)的示例。示例中给出了不同的区域性和时区设置,以阐释更改区域性的影响。可以通过下列方法更改当前区域性:更改 Microsoft Windows 的“日期/时间”控制面板中的值,传递您自己的 DateTimeFormatInfo 对象,或将 CultureInfo 对象设置传递给不同的区域性。此表是说明自定义日期和时间说明符如何影响格式化的快速指南。请参阅该表下面阐释这些说明符的代码示例部分。

 

格式说明符 当前区域性 时区 输出

d, M en-US GMT 12, 4

d, M es-MX GMT 12, 4

d MMMM en-US GMT 12 April

d MMMM es-MX GMT 12 Abril

dddd MMMM yy gg en-US GMT Thursday April 01 A.D.

dddd MMMM yy gg es-MX GMT Jueves Abril 01 DC

h , m: s en-US GMT 6 , 13: 12

hh,mm:ss en-US GMT 06,13:12

HH-mm-ss-tt en-US GMT 06-13-12-AM

hh:mm, G\MT z  en-US GMT 05:13 GMT +0

hh:mm, G\MT z  en-US GMT +10:00 05:13 GMT +10

hh:mm, G\MT zzz en-US GMT 05:13 GMT +00:00

————————————————————————————————————————————————————————————————————

DateTime的Format格式 收藏

 

DateTime的Format格式,前只知道用,没有想到这么细!!

 

 格式字符 关联属性/说明

 d             ShortDatePattern

 D             LongDatePattern

 f              完整日期和时间(长日期和短时间)

 F             FullDateTimePattern(长日期和长时间)

 g             常规(短日期和短时间)

 G            常规(短日期和长时间)

 m、M     MonthDayPattern

 r、R        RFC1123Pattern

 s              用当地时间的 SortableDateTimePattern(基于 ISO 8601)

 t               hortTimePattern

 T              ongTimePattern

 u              niversalSortableDateTimePattern 用于显示通用时间的格式

 U             使用通用时间的完整日期和时间(长日期和长时间)

 y、Y       YearMonthPattern

 

 下表列出了可被合并以构造自定义模式的模式。这些模式是区分大小写的;例如,识别“MM”,但不识别“mm”。如果自定义模式包含空白字符或用单引号括起来的字符,则输出字符串页也将包含这些字符。未定义为格式模式的一部分或未定义为格式字符的字符按其原义复制。

 

 格式模式 说明

 d                月中的某一天。一位数的日期没有前导零。

 dd              月中的某一天。一位数的日期有一个前导零。

 ddd            周中某天的缩写名称,在 AbbreviatedDayNames 中定义。

 dddd          周中某天的完整名称,在 DayNames 中定义。

 M              月份数字。一位数的月份没有前导零。

 MM           月份数字。一位数的月份有一个前导零。

 MMM       月份的缩写名称,在 AbbreviatedMonthNames 中定义。

 MMMM    月份的完整名称,在 MonthNames 中定义。

 y                不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。

 yy              不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。

 yyyy           包括纪元的四位数的年份。

 gg               时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。

 h                12 小时制的小时。一位数的小时数没有前导零。

 hh              12 小时制的小时。一位数的小时数有前导零。

 H               24 小时制的小时。一位数的小时数没有前导零。

 HH            24 小时制的小时。一位数的小时数有前导零。

 m              分钟。一位数的分钟数没有前导零。

 mm            分钟。一位数的分钟数有一个前导零。

 s                秒。一位数的秒数没有前导零。

 ss              秒。一位数的秒数有一个前导零。

 f                秒的小数精度为一位。其余数字被截断。

 ff               秒的小数精度为两位。其余数字被截断。

 fff              秒的小数精度为三位。其余数字被截断。

 ffff             秒的小数精度为四位。其余数字被截断。

 fffff            秒的小数精度为五位。其余数字被截断。

 ffffff           秒的小数精度为六位。其余数字被截断。

 fffffff          秒的小数精度为七位。其余数字被截断。

 t               在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项的第一个字符(如果存在)。

 tt              在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项(如果存在)。

 z               时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数没有前导零。例如,太平洋标准时间是“-8”。

 zz             时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数有前导零。例如,太平洋标准时间是“-08”。

 zzz            完整时区偏移量(“+”或“-”后面跟有小时和分钟)。一位数的小时数和分钟数有前导零。例如,太平洋标准时间是“-08:00”。

 :               在 TimeSeparator 中定义的默认时间分隔符。

 /               在 DateSeparator 中定义的默认日期分隔符。

 % c          其中 c 是格式模式(如果单独使用)。如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符。

 \ c            其中 c 是任意字符。照原义显示字符。若要显示反斜杠字符,请使用“\\”。

 

 只有上面第二个表中列出的格式模式才能用于创建自定义模式;在第一个表中列出的标准格式字符不能用于创建自定义模式。自定义模式的长度至少为两个字符;例如,

 

 DateTime.ToString( "d") 返回 DateTime 值;“d”是标准短日期模式。

 DateTime.ToString( "%d") 返回月中的某天;“%d”是自定义模式。

 DateTime.ToString( "d ") 返回后面跟有一个空白字符的月中的某天;“d”是自定义模式。

 

 

 

用DateTime.ToString(string format)输出不同格式的日期

DateTime.ToString()函数有四个重载。一般用得多的就是不带参数的那个了。殊不知,DateTime.ToString(string format)功能更强大,能输出不同格式的日期。以下把一些情况罗列出来,供大家参考。有些在MSDN上有的就没有列出来了。

1.         y代表年份,注意是小写的y,大写的Y并不代表年份。

 

2.         M表示月份。

 

3.         d表示日期,注意D并不代表什么。

 

4.         h或H表示小时,h用的是12小时制,H用的是24小时制。

 

5.         m表示分钟。

 

6.         s表示秒。注意S并不代表什么。

 

格式

 输出

 示例

 

 

y

 7

 string yy = DateTime.Now.ToString("y-MM")

 

yy="7-05"

 

yy

 07

 string yy = DateTime.Now.ToString("yy-MM")

 

yy="07-05"

 

yyy或更多的y

 1984

 string yy = DateTime.Now.ToString("yyyy");

 

yy="2007"

 

 

M

 5.

 string mon = DateTime.Parse("1984-05-09")ToString("yyyy-M")

 

mon = "1984-5"

 

MM

 05.

 string mon = DateTime.Parse("1984-05-09")ToString("MM")

 

mon = "05"

 

MMM

 如果是中文版的操作系统,则会输出:五月.

 

如果是英文操作系统,则输入月份前三个字母的简写:May

 string mon = DateTime.Parse("2006-07-01").ToString("MMM")

 

英文版操作系统:Jul

 

中文版操作系统:七月

 

MMMM或更多的M

 如果是中文版的操作系统,则会输出:五月.

 

如果是英文操作系统,则输入月份的全写

 string mon = DateTime.Parse("2006-07-01").ToString("MMM")

 

英文版操作系统:July

 

中文版操作系统:七月

 

日期或星期

 

d

 9

 string dd= DateTime.Parse("1984-05-09")ToString("d")

 

dd= "9"

 

 

 

dd

 09

 string dd= DateTime.Parse("1984-05-09")ToString("dd")

 

dd= "09"

 

ddd

 如果是中文版的操作系统,则会输出星期,如星期三。.

 

如果是英文操作系统,则输出星期的简写:如

 

Wed

 string dd = DateTime.Parse("2006-07-01").ToString("ddd")

 

英文版操作系统:Wed

 

中文版操作系统:星期三

 

dddd或更多的d

 如果是中文版的操作系统,则会输出星期,如星期三。.

 

如果是英文操作系统,则输出星期:如

 

Wednesday

 string dd = DateTime.Parse("2006-07-01").ToString("dddd")

 

英文版操作系统:Wednesday

 

中文版操作系统:星期三

 

小时

 

h

 小时范围:1-12

 string hh = DateTime.Now.ToString(“h”);

 

hh = 8

 

hh或更多的h

 小时范围:1-12

 string hh = DateTime.Now.ToString(“hh”);

 

hh = 08

 

H

 小时范围:0-23

 string hh = DateTime.Now.ToString(“yyyy-H”);

 

hh = 2006-8

 

HH或更多的H

 小时范围:0-23

 string hh = DateTime.Now.ToString(“yyyy-HH”);

 

hh = 2006-08

 

string hh = DateTime.Pare(“2006-7-4 18:00:00”).ToString(“yyyy-HH”);

 

hh = 2006-18

 

分钟

 

m

 6

 string mm =  DateTime.Now.ToString("yyyy-MM-dd-m");

 

mm = “2006-07-01-6”;

 

mm或更多的m

 06

 string mm =  DateTime.Now.ToString("yyyy-MM-dd-mm");

 

mm = “2006-07-01-06”;

 

 

s

 6

 string mm =  DateTime.Now.ToString("yyyy-MM-dd-s");

 

mm = “2006-07-01-6”;

 

ss或更多的s

 06

 string mm =  DateTime.Now.ToString("yyyy-MM-dd-ss");

 

mm = “2006-07-01-06”;

————————————————————————————————————————————



 

标签:string,mm,dd,DateTime,yyyy,ToString,Oracle
From: https://blog.51cto.com/u_16070335/6189839

相关文章

  • Java_procedure with return value(oracle)
    Java调用Oracle中有返回值的存储过程1) 在编写存储过程时,输入参数用in(如果不写默认为in),输出参数用out --编写过程,要求输入雇员编号,返回雇员姓名。 createorreplaceproceduregetNameByNo(noinnumber,nameoutvarchar2)is begin  selectenameintonamefrom......
  • Maven_How To Add Oracle JDBC Driver In Your Maven Local Repository
    via: http://www.mkyong.com/maven/how-to-add-oracle-jdbc-driver-in-your-maven-local-repository/ DuetoOraclelicenserestriction,thereisNOpublicMavenrepositoryprovidesOracleJDBCdriver.TouseOraclejdbcdrivewithMaven,youhavetoinstallit......
  • 完善SQL二进制到IP地址字符串转换(Perfecting SQL binary to IP Address string conve
    我们使用二进制(16)字段来存储IP地址。我们这样做,因为它可以同时拥有IPv4和IPv6地址,并且很容易与.NetIPAddress类一起使用。但是,为了报告目的,我创建了以下SQL函数将二进制地址转换为IP地址字符串。CREATEFUNCTIONfn_ConvertBinaryIPAddressToString(@binaryIPbinary(......
  • Oracle_数组
     Oracle数组一般可以分为固定数组和可变数组集合:是具有相同定义的元素的聚合。Oracle有两种类型的集合:可变长数组(VARRAY):可以有任意数量的元素,但必须预先定义限制值。嵌套表:视为表中之表,可以有任意数量的元素,不需要预先定义限制值。在PL/SQL中是没有数组(Array)概念的。但是如果程......
  • ORA-00942 Table or View Does Not Exist Oracle Error
    Cause:java.sql.SQLException:ORA-00942:tableorviewdoesnotexistThenItrytorunthesqlstatementthatthewebapptryingtoexecutebeforehittingthiserroranditreturnstheresultswithoutanyerror.Thevendorgivemethefeedbackthattheta......
  • #yyds干货盘点#【愚公系列】2023年04月 .NET CORE工具案例-.NET Core使用PaddleOCRSha
    (文章目录)前言PaddleOCRSharp是一个基于百度飞桨PaddleOCR的C++代码修改并封装的.NET的OCR工具类库。包含文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能,同时针对小图识别不准的情况下,做了优化,提高识别准确率。包含总模型仅8.6M的超轻量级中文OCR,单模型支持中......
  • 【FPGA】 DDR读写
    前两个礼拜搞来一个用MIGIP核读写的DDR的程序本来已经能够跑起来了。今天试了下,init_calib_complete信号一直拉不高,看了半天才知道是仿真时间不够。记录一下init_calib_complete拉高的时间点110us左右,省的下次继续走弯路。(输入时钟频率为100MHz,复位信号拉高)重新回顾了一......
  • oracle 字段大于某段时间
    精确到年月日时分秒,根据要求可精确到指定的日期时间:Oracle数据库时间字段>to_date(‘2020/10/19:38:51’,‘YYYY/MM/DDHH24:MI:SS’);......
  • LightOJ 1348 Aladdin and the Return Journey (树链剖分)
    树链剖分模板题。最近一直有比赛。。好长时间没写了。明显生疏了。。找个模板题熟悉一下。代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#include<stdlib.h>#include<map>#include<set>#include......
  • ORACLE还原恢复启动时数据库报ORA-00704, ORA-00604, ORA-00904
    Oracle数据库还原恢复后,执行alterdatabaseopenresetlogs时遇到下面错误。如下所示:SQL> alter database open resetlogs;alter database open resetlogs*ERROR at line 1:ORA-00603: ORACLE server session terminated by fatal errorORA-01092: ORACLE ins......