DateTime整理汇总

本文介绍了SQL Server中处理日期和时间的方法,包括smalldatetime和datetime类型的特性及使用技巧,展示了如何获取当前日期时间、进行日期时间的格式化操作,以及日期时间的计算。

smalldatetime的有效时间范围1900/1/1~2079/6/6

datetime的有效时间范围1753/1/1~9999/12/31

它们更关键的差别是smalldatetime只精准到分,而datetime则可精准到3.33毫秒。

SQL Server中,smalldatetime只能精确到分钟,而datatime可以精确到3%秒(3.33毫秒)。

smalldatetime占用4个字节,前2个字节存储base date(1900年1月1日)之后的天数。后2个字节存储午夜后的分钟数

datetime占用8个字节,前4个字节存储base date(即1900年1月1日)之前之后的天数,后4个字节存储午夜后的毫秒数

由于datetime的精度是3%秒,这就涉及到小数,毫秒之前可以是冒号,也可以是小数点。使用冒号时表示的意义同时分秒间隔,11:11:11:21表示021毫秒,前面的0省略,而小数点表示的意义同数学上的小数点,如11:11:11.21表示210毫秒,省略的是后面的0。

//获取日期+时间
DateTime.Now.ToString();              // 2008-9-4 20:02:10
DateTime.Now.ToLocalTime().ToString();// 2008-9-4 20:12:12

//获取日期
DateTime.Now.ToLongDateString().ToString();   // 2008年9月4日
DateTime.Now.ToShortDateString().ToString();   // 2008-9-4
DateTime.Now.ToString("yyyy-MM-dd");       // 2008-09-04
DateTime.Now.Date.ToString();           // 2008-9-4 0:00:00

//获取时间
DateTime.Now.ToLongTimeString().ToString();  // 20:16:16
DateTime.Now.ToShortTimeString().ToString();  // 20:16
DateTime.Now.ToString("hh:mm:ss");       // 08:05:57
DateTime.Now.TimeOfDay.ToString();       // 20:33:50.7187500

//其他
DateTime.ToFileTime().ToString();      // 128650040212500000
DateTime.Now.ToFileTimeUtc().ToString();  // 128650040772968750
DateTime.Now.ToOADate().ToString();      // 39695.8461709606
DateTime.Now.ToUniversalTime().ToString();  // 2008-9-4 12:19:14

DateTime.Now.Year.ToString();         获取年份  // 2008
DateTime.Now.Month.ToString();     获取月份  // 9
DateTime.Now.DayOfWeek.ToString();获取星期  // Thursday
DateTime.Now.DayOfYear.ToString();获取第几天  // 248
DateTime.Now.Hour.ToString();         获取小时  // 20
DateTime.Now.Minute.ToString();    获取分钟  // 31
DateTime.Now.Second.ToString();    获取秒数  // 45

//n为一个数,可以数整数,也可以事小数
dt.AddYears(n).ToString();  //时间加n年
dt.AddDays(n).ToString();  //加n天
dt.AddHours(n).ToString();  //加n小时
dt.AddMonths(n).ToString();  //加n个月
dt.AddSeconds(n).ToString();  //加n秒
dt.AddMinutes(n).ToString();  //加n分
1.string strTime = DateTime.Now.ToLongTimeString();


--------------------------------------------------------------------------------
2.
DateTime dt = DateTime.Now;  
String str = dt.ToString("yyyy-MM-dd");

或者
string str = DateTime.Now.ToString("yyyy-MM-dd");  
or  
string str = DateTime.Now.ToShortDateString();


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

3.DateTime.Now.ToString("yyyy-MM-dd");取日期,得到如2005-02-18的格式
DateTime.Now.ToString("hh:mm:ss");取时间,得到如10:45:30的格式
格式 显示
M/d/yy    12/7/58
d-MMM     7-Dec
d-MMMM-yy 7-December-58
d MMMM    7 December
MMMM yy   December 58
hh:mm tt  08:50 PM
h:mm:ss t 8:50:35 P
H:mm      20:50
H:mm:ss   20:50:35
M/d/yyyy H:mm 12/7/1958 20:50

字符 说明
(:)时间分隔符。在某些区域设置中,可以使用其他字符表示时间分隔符。时间分隔符在格式化时间值时分隔小时、分钟和秒。格式化输出中用作时间分隔符的实际字符由系统的LocaleID值确定。
(/)日期分隔符。在某些区域设置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值时分隔日、月和年。格式化输出中用作日期分隔符的实际字符由您的区域设置确定。
(%)用于表明不论尾随什么字母,随后字符都应该以单字母格式读取。也用于表明单字母格式应以用户定义格式读取。有关详细信息,请参阅下面的内容。
d将日显示为不带前导零的数字(如 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %d。
dd将日显示为带前导零的数字(如 01)。
ddd将日显示为缩写形式(例如 Sun)。
dddd将日显示为全名(例如 Sunday)。
M将月份显示为不带前导零的数字(如一月表示为 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %M。
MM将月份显示为带前导零的数字(例如 01/12/01)。
MMM将月份显示为缩写形式(例如 Jan)。
MMMM将月份显示为完整月份名(例如 January)。
gg显示时代/纪元字符串(例如 A.D.)
h使用12小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)。如果这是用户定义的数字格式中的唯一字符,请使用%h。
hh使用 12小时制将小时显示为带前导零的数字(例如 01:15:15 PM)。
H使用 24小时制将小时显示为不带前导零的数字(例如 1:15:15)。如果这是用户定义的数字格式中的唯一字符,请使用%H。
HH使用 24小时制将小时显示为带前导零的数字(例如 01:15:15)。
m将分钟显示为不带前导零的数字(例如 12:1:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %m。
mm将分钟显示为带前导零的数字(例如 12:01:15)。
s将秒显示为不带前导零的数字(例如 12:15:5)。如果这是用户定义的数字格式中的唯一字符,请使用 %s。
ss将秒显示为带前导零的数字(例如 12:15:05)。
f显示秒的小数部分。例如,ff将精确显示到百分之一秒,而 ffff将精确显示到万分之一秒。用户定义格式中最多可使用七个f符号。如果这是用户定义的数字格式中的唯一字符,请使用 %f。
t使用 12小时制,并对中午之前的任一小时显示大写的 A,对中午到 11:59 P.M之间的任一小时显示大写的P。如果这是用户定义的数字格式中的唯一字符,请使用 %t。
tt使用 12小时制,并对中午之前任一小时显示大写的 AM;对中午到 11:59 P.M之间的任一小时显示大写的PM。
y将年份 (0-9)显示为不带前导零的数字。如果这是用户定义的数字格式中的唯一字符,请使用 %y。
yy以带前导零的两位数字格式显示年份(如果适用)。
yyy以三位数字格式显示年份。
yyyy以四位数字格式显示年份。
z显示不带前导零的时区偏移量(如 -8)。如果这是用户定义的数字格式中的唯一字符,请使用 %z。
zz显示带前导零的时区偏移量(例如 -08)
zzz显示完整的时区偏移量(例如 -08:00)

DateTime.Now.ToShortTimeString() 
DateTime dt = DateTime.Now; 
dt.ToString();//2005-11-5 13:21:25 
dt.ToFileTime().ToString();//127756416859912816 
dt.ToFileTimeUtc().ToString();//127756704859912816 
dt.ToLocalTime().ToString();//2005-11-5 21:21:25 
dt.ToLongDateString().ToString();//2005年11月5日 
dt.ToLongTimeString().ToString();//13:21:25 
dt.ToOADate().ToString();//38661.5565508218 
dt.ToShortDateString().ToString();//2005-11-5 
dt.ToShortTimeString().ToString();//13:21 
dt.ToUniversalTime().ToString();//2005-11-5 5:21:25 
dt.Year.ToString();//2005 
dt.Date.ToString();//2005-11-5 0:00:00 
dt.DayOfWeek.ToString();//Saturday 
dt.DayOfYear.ToString();//309 
dt.Hour.ToString();//13 
dt.Millisecond.ToString();//441 
dt.Minute.ToString();//30 
dt.Month.ToString();//11 
dt.Second.ToString();//28 
dt.Ticks.ToString();//632667942284412864 
dt.TimeOfDay.ToString();//13:30:28.4412864 
dt.ToString();//2005-11-5 13:47:04 
dt.AddYears(1).ToString();//2006-11-5 13:47:04 
dt.AddDays(1.1).ToString();//2005-11-6 16:11:04 
dt.AddHours(1.1).ToString();//2005-11-5 14:53:04 
dt.AddMilliseconds(1.1).ToString();//2005-11-5 13:47:04 
dt.AddMonths(1).ToString();//2005-12-5 13:47:04 
dt.AddSeconds(1.1).ToString();//2005-11-5 13:47:05 
dt.AddMinutes(1.1).ToString();//2005-11-5 13:48:10 
dt.AddTicks(1000).ToString();//2005-11-5 13:47:04 
dt.CompareTo(dt).ToString();//0 
dt.Add(?).ToString();//问号为一个时间段 
dt.Equals("2005-11-6 16:11:04").ToString();//False 
dt.Equals(dt).ToString();//True 
dt.GetHashCode().ToString();//1474088234 
dt.GetType().ToString();//System.DateTime 
dt.GetTypeCode().ToString();//DateTime

dt.GetDateTimeFormats('s')[].ToString();//2005-11-05T14:06:25 
dt.GetDateTimeFormats('t')[].ToString();//14:06 
dt.GetDateTimeFormats('y')[].ToString();//2005年11月 
dt.GetDateTimeFormats('D')[].ToString();//2005年11月5日 
dt.GetDateTimeFormats('D')[1].ToString();//2005 11 05 
dt.GetDateTimeFormats('D')[2].ToString();//星期六 2005 11 05 
dt.GetDateTimeFormats('D')[3].ToString();//星期六 2005年11月5日 
dt.GetDateTimeFormats('M')[].ToString();//11月5日 
dt.GetDateTimeFormats('f')[].ToString();//2005年11月5日 14:06 
dt.GetDateTimeFormats('g')[].ToString();//2005-11-5 14:06 
dt.GetDateTimeFormats('r')[].ToString();//Sat, 05 Nov 2005 14:06:25 GMT 
string.Format("{0:d}",dt);//2005-11-5 
string.Format("{0}",dt);//2005年11月5日 
string.Format("{0:f}",dt);//2005年11月5日 14:23 
string.Format("{0:F}",dt);//2005年11月5日 14:23:23 
string.Format("{0:g}",dt);//2005-11-5 14:23 
string.Format("{0:G}",dt);//2005-11-5 14:23:23 
string.Format("{0:M}",dt);//11月5日 
string.Format("{0:R}",dt);//Sat, 05 Nov 2005 14:23:23 GMT 
string.Format("{0:s}",dt);//2005-11-05T14:23:23 
string.Format("{0:t}",dt);//14:23 
string.Format("{0:T}",dt);//14:23:23 
string.Format("{0:u}",dt);//2005-11-05 14:23:23Z 
string.Format("{0:U}",dt);//2005年11月5日 6:23:23 
string.Format("{0:Y}",dt);//2005年11月 
string.Format("{0}",dt);//2005-11-5 14:23:23 
string.Format("{0:yyyyMMddHHmmssffff}",dt); 
计算2个日期之间的天数差 
----------------------------------------------- 
DateTime dt1 = Convert.DateTime("2007-8-1"); 
DateTime dt2 = Convert.DateTime("2007-8-15"); 
TimeSpan span = dt2.Subtract(dt1); 
int dayDiff = span.Days + 1; 
计算某年某月的天数 
----------------------------------------------- 
int days = DateTime.DaysInMonth(2007, 8); 
days = 31; 
给日期增加一天、减少一天 
----------------------------------------------- 
DateTime dt =DateTime.Now; 
dt.AddDays(1); //增加一天 
dt.AddDays(-1);//减少一天 
其它年份方法类似... 
Oracle SQL里转换日期函数 
----------------------------------------------- 
to_date("2007-6-6",'YYYY-MM-DD"); 
to_date("2007/6/6",'yyyy/mm/dd"); 
如下一组数据,如何查找表里包含9月份的记录: 
CGGC_STRATDATE CGGC_ENDDATE 
========================================= 
2007-8-4 2007-9-5 
2007-9-5 2007-9-20 
2007-9-22 2007-10-5 
SELECT * FROM TABLE 
(TO_DATE('2007/9/1','yyyy/mm/dd') BETWEEN CGGC_STRATDATE 
AND CGGC_ENDDATE OR CGGC_STRATDATE >=TO_DATE('2007/9/1','yyyy/mm/dd') 
AND CGGC_ENDDATE<=TO_DATE('2007/9/30','yyyy/mm/dd') " 
OR TO_DATE('2007/9/30','yyyy/mm/dd') BETWEEN CGGC_STRATDATE 
AND CGGC_ENDDATE) ORDER BY CGGC_STRATDATE ASC

<think>嗯,用户让我介绍一下Python的基础知识汇总。首先,我需要确定用户的需求是什么。可能他们刚开始学习Python,想要一个系统的概览,或者是复习一下基础知识。不管怎样,我应该从最基础的部分开始,逐步展开,确保覆盖到关键点。 首先,Python的基本语法特点。Python以简洁和易读著称,所以缩进很重要,得强调一下缩进代替大括号,还有注释的方式。然后,变量和数据类型,这部分需要列出常见的数据类型,比如整数、浮点数、字符串、布尔值,还有复杂点的列表、元组、字典、集合。可能需要解释可变和不可变类型的区别,比如列表和元组的不同。 接下来是运算符,包括算术、比较、逻辑、赋值这些基本运算符,可能还要提到成员运算符和身份运算符,比如in和is的用法。这部分用户可能需要例子来理解。 流程控制是编程的基础,条件语句if-elif-else,循环语句for和while,还有break、continue、pass这些控制语句。可能需要举例说明循环的使用场景,比如遍历列表或者处理条件判断。 函数部分,定义函数的语法,参数传递,包括位置参数、默认参数、可变参数,返回值。还有lambda表达式,这部分对于初学者可能有点难,但简要介绍应该没问题。 然后是数据结构,列表、元组、字典、集合的操作和方法。比如列表的append、extend,字典的get和items方法,集合的交集并集等。这部分需要比较详细,因为数据结构是Python中常用的部分。 文件操作,打开文件的模式(读、写、追加),读写文件的方法,以及使用with语句的好处,自动关闭文件。这部分例子很重要,用户可能需要知道如何实际读写文件。 异常处理,try-except块,finally的使用,如何抛出异常。处理异常是编写健壮程序的重要部分,应该涵盖常见用法。 模块和包,如何导入模块,创建自己的模块和包,安装第三方库。这部分用户可能会需要知道如何扩展Python的功能,比如用pip安装requests库。 面向对象编程,类、对象、继承、多态、封装的概念。构造方法__init__,实例方法,类方法,静态方法的区别。这部分可能需要更详细的解释,因为OOP对新手来说比较抽象。 常用内置模块,比如os、sys、datetime、json这些,举例说明它们的用途。用户可能经常需要这些模块来处理文件、系统参数、时间和JSON数据。 最后,可以推荐一些学习资源,帮助用户进一步学习。比如官方文档、书籍、在线教程和练习平台。 需要检查有没有遗漏的重要知识点,比如生成器、装饰器这些高级特性,但既然是基础知识汇总,可能暂时不需要深入。不过,如果有余力的话可以简单提一下,让用户知道有这些概念存在。 还要注意使用中文回答,LaTeX格式的数学公式是否正确,但用户的问题是关于Python的,可能不太涉及数学公式,但如果有代码部分,需要用正确的格式标注。不过用户没有特别提到代码,所以可能以文字描述为主,适当的地方插入代码示例,比如函数定义、循环结构等。 现在需要组织这些内容,分成几个主要部分,每个部分下有小标题和要点,结构清晰,方便阅读。确保语言简洁明了,适合初学者理解。可能还需要注意排版,使用Markdown的标题、列表等格式,但用户没有特别要求,所以按照常规的文本结构来处理。</think>以下是 Python 基础知识的系统整理,适合新手入门或快速复习: --- ### 一、基本语法特点 1. **缩进规则** - 用缩进(4个空格或1个Tab)代替大括号 `{}` 表示代码块 - 错误示例: ```python if True: print("错误") # 缺少缩进会报错 ``` 2. **注释** - 单行注释:`# 注释内容` - 多行注释:`'''注释内容'''` 或 `"""注释内容"""` --- ### 二、变量与数据类型 1. **基本类型** ```python a = 10 # 整数 int b = 3.14 # 浮点数 float c = "Hello" # 字符串 str d = True # 布尔值 bool ``` 2. **复合类型** ```python list1 = [1, "a", True] # 列表(可变) tuple1 = (1, "a", True) # 元组(不可变) dict1 = {"name": "Alice"} # 字典(键值对) set1 = {1, 2, 3} # 集合(元素唯一) ``` --- ### 三、运算符 | 类型 | 运算符 | |------------|--------------------------------| | 算术 | `+ - * / // % **` | | 比较 | `== != > < >= <=` | | 逻辑 | `and or not` | | 成员 | `in` `not in` | | 身份 | `is` `is not`(判断对象标识) | --- ### 四、流程控制 1. **条件语句** ```python if score >= 90: print("A") elif score >= 60: print("及格") else: print("不及格") ``` 2. **循环语句** ```python # for循环 for i in range(5): # 输出0-4 print(i) # while循环 count = 0 while count < 3: print(count) count += 1 ``` --- ### 五、函数 1. **定义与调用** ```python def add(a, b=0): # 带默认值的参数 return a + b print(add(3, 5)) # 输出8 ``` 2. **可变参数** ```python def sum_all(*args): return sum(args) print(sum_all(1, 2, 3)) # 输出6 ``` 3. **Lambda表达式** ```python square = lambda x: x**2 print(square(5)) # 输出25 ``` --- ### 六、文件操作 ```python # 写入文件 with open("test.txt", "w") as f: f.write("Hello World") # 读取文件 with open("test.txt", "r") as f: content = f.read() print(content) # 输出 Hello World ``` --- ### 七、异常处理 ```python try: num = int(input("输入数字: ")) except ValueError: print("输入错误!") finally: print("执行结束") ``` --- ### 八、面向对象编程 ```python class Dog: def __init__(self, name): self.name = name def bark(self): print(f"{self.name}在叫!") my_dog = Dog("Buddy") my_dog.bark() # 输出 Buddy在叫! ``` --- ### 九、常用模块速览 | 模块 | 用途 | |------------|------------------------| | `os` | 操作系统接口 | | `sys` | 系统参数 | | `datetime` | 日期时间处理 | | `json` | JSON数据解析 | | `requests` | HTTP网络请求(需安装) | --- ### 学习资源推荐 - 官方文档:[docs.python.org](https://docs.python.org/zh-cn/3/) - 书籍:《Python编程:从入门到实践》 - 实践平台:LeetCode、Codewars 建议通过实际项目(如数据分析、Web开发)巩固知识,遇到报错时仔细阅读错误信息,善用`print()`调试和搜索引擎解决问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厦门德仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值