sql 获取年月日 日期时间格式大全

本文详细介绍了在SQL中使用CONVERT函数将日期字段转换为不同格式的方法,包括各种日期和时间格式的展示,如年月日、时分秒等,适用于数据库操作与数据展示需求。

select * from 表名 where Convert(varchar(100),日期字段,23)=’2018-07-24’

Select CONVERT(varchar(100), GETDATE(), 0) –Jul 24 2018 2:44PM

Select CONVERT(varchar(100), GETDATE(), 1) –07/24/18

Select CONVERT(varchar(100), GETDATE(), 2) –18.07.24

Select CONVERT(varchar(100), GETDATE(), 3) –24/07/18

Select CONVERT(varchar(100), GETDATE(), 4) –24.07.18

Select CONVERT(varchar(100), GETDATE(), 5) –24-07-18

Select CONVERT(varchar(100), GETDATE(), 6) –24 Jul 18

Select CONVERT(varchar(100), GETDATE(), 7) –Jul 24, 18

Select CONVERT(varchar(100), GETDATE(), 8) –14:47:03

Select CONVERT(varchar(100), GETDATE(), 9) –Jul 24 2018 2:47:27:863PM

Select CONVERT(varchar(100), GETDATE(), 10) –07-24-18

Select CONVERT(varchar(100), GETDATE(), 11) –18/07/24

Select CONVERT(varchar(100), GETDATE(), 12) –180724

Select CONVERT(varchar(100), GETDATE(), 13) –24 Jul 2018 14:48:52:453

Select CONVERT(varchar(100), GETDATE(), 14) –14:49:08:250

Select CONVERT(varchar(100), GETDATE(), 20) –2018-07-24 14:49:23

Select CONVERT(varchar(100), GETDATE(), 21) –2018-07-24 14:49:43.837

Select CONVERT(varchar(100), GETDATE(), 22) –07/24/18 2:50:02 PM

Select CONVERT(varchar(100), GETDATE(), 23) –2018-07-24

Select CONVERT(varchar(100), GETDATE(), 24) –14:50:50

Select CONVERT(varchar(100), GETDATE(), 25) –2018-07-24 14:51:05.733

Select CONVERT(varchar(100), GETDATE(), 100) –Jul 24 2018 2:51PM

Select CONVERT(varchar(100), GETDATE(), 101) –07/24/2018

Select CONVERT(varchar(100), GETDATE(), 102) –2018.07.24

Select CONVERT(varchar(100), GETDATE(), 103) –24/07/2018

Select CONVERT(varchar(100), GETDATE(), 104) –24.07.2018

Select CONVERT(varchar(100), GETDATE(), 105) –24-07-2018

Select CONVERT(varchar(100), GETDATE(), 106) –24 Jul 2018

Select CONVERT(varchar(100), GETDATE(), 107) –Jul 24, 2018

Select CONVERT(varchar(100), GETDATE(), 108) –14:53:27

Select CONVERT(varchar(100), GETDATE(), 109) –Jul 24 2018 2:53:45:740PM

Select CONVERT(varchar(100), GETDATE(), 110) –07-24-2018

Select CONVERT(varchar(100), GETDATE(), 111) –2018/07/24

Select CONVERT(varchar(100), GETDATE(), 112) –20180724

Select CONVERT(varchar(100), GETDATE(), 113) –24 Jul 2018 14:55:14:070

Select CONVERT(varchar(100), GETDATE(), 114) –14:56:00:610

Select CONVERT(varchar(100), GETDATE(), 120) –2018-07-24 14:56:14

Select CONVERT(varchar(100), GETDATE(), 121) –2018-07-24 14:56:30.440

Select CONVERT(varchar(100), GETDATE(), 126) –2018-07-24T14:56:50.703

Select CONVERT(varchar(100), GETDATE(), 130) –12 ?? ?????? 1439 2:57:07:070PM

Select CONVERT(varchar(100), GETDATE(), 131) –12/11/1439 2:57:32:280PM

<think>我们被要求使用SQL Server获取当前日期的年月日。根据引用内容,有几种方法可以实现。 方法1:使用CONVERT函数将日期转换为指定格式的字符串。例如,格式120对应的是&#39;yyyy-mm-dd&#39;,这样我们就可以得到年月日。 方法2:使用DATENAME函数分别获取年、月、日,然后拼接起来。 但是,用户要求的是获取当前日期的年月日,我们可以直接使用CONVERT函数转换成只包含年月日的字符串,或者使用日期函数去掉时间部分。 根据引用[2]中的示例,有一种方法是: select convert(datetime,convert(varchar(8),getdate(),120)+&#39;01&#39;,120) -- 这是获取本月第一天,但我们可以借鉴其转换思路。 实际上,如果我们只需要当前日期的年月日(不带时间),我们可以将GETDATE()转换为日期类型(在SQL Server 2008及以上版本有date类型),或者转换为字符串然后截年月日部分。 在SQL Server 2005及以后版本,我们可以使用: SELECT CONVERT(VARCHAR(10), GETDATE(), 120) -- 120格式为&#39;yyyy-mm-dd&#39; 但是,如果我们需要一个datetime类型(时间部分为00:00:00.000),我们可以: SELECT CAST(CONVERT(VARCHAR(10), GETDATE(), 120) AS DATETIME) 另外,在SQL Server 2008及以上版本,我们可以直接使用date类型: SELECT CONVERT(DATE, GETDATE()) 不过,用户没有指定版本,所以我们可以提供两种方法。 根据引用[3]中,我们可以分别获取年、月、日,然后组合: SELECT DateName(year,GetDate()) + &#39;-&#39; + DateName(month,GetDate()) + &#39;-&#39; + DateName(day,GetDate()) 但是注意,这样得到的月份可能是英文(决于系统语言设置),所以不推荐。 因此,推荐使用CONVERT函数转换为字符串格式。 所以,我们可以这样写: 方法1(返回字符串): SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS &#39;当前日期年月日&#39; 方法2(返回date类型,仅适用于SQL Server 2008及以上): SELECT CAST(GETDATE() AS DATE) AS &#39;当前日期年月日&#39; 如果用户需要的是datetime类型(时间部分为0),则: SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 120)) AS &#39;当前日期年月日&#39; 考虑到兼容性,我们使用第一种方法(字符串)或者第三种方法(datetime)可能更通用。 另外,引用[2]中还有一种方法:使用DATEADD和DATEDIFF组合来去掉时间部分,例如: SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) -- 返回的是当天的0点的datetime 这种方法在任意版本都适用,且返回的是datetime类型。 因此,我们可以提供多种方法。 根据用户需求,他只需要年月日,我们可以选择返回字符串或者日期类型(不带时间)。下面我们给出几种写法。 总结: 1. 返回字符串格式&#39;yyyy-mm-dd&#39;(最常用): SELECT CONVERT(VARCHAR(10), GETDATE(), 120) 2. 返回datetime类型(时间部分为0): SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) 3. 返回date类型(仅SQL Server 2008及以上): SELECT CAST(GETDATE() AS DATE) 4. 另一种返回字符串格式,比如&#39;yyyy年mm月dd日&#39;(自定义格式): SELECT DATENAME(YEAR,GETDATE())+&#39;年&#39;+RIGHT(&#39;0&#39;+DATENAME(MONTH,GETDATE()),2)+&#39;月&#39;+RIGHT(&#39;0&#39;+DATENAME(DAY,GETDATE()),2)+&#39;日&#39; 但是注意,第4种方法中,月份和日期可能需要补零,而且如果系统语言不是中文,月份可能是英文。 因此,最推荐的是第一种和第二种。 下面我们按照要求生成回答。</think>### SQL Server 获取当前日期的年月日SQL Server获取当前日期的年月日(不含时间部分)有以下常用方法,根据需求选择不同返回格式: #### ✅ 方法 1:返回 `yyyy-mm-dd` 字符串格式(最常用) ```sql SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS CurrentDate; ``` **说明**: - `GETDATE()` 获取当前完整日期时间 - `CONVERT(VARCHAR(10), ..., 120)` 将日期转为 `yyyy-mm-dd` 格式的字符串 - **输出示例**:`2023-10-25` [^1][^2] #### ✅ 方法 2:返回 `date` 类型(SQL Server 2008+) ```sql SELECT CAST(GETDATE() AS DATE) AS CurrentDate; ``` **说明**: - 直接截日期部分,时间自动归零 - **输出示例**:`2023-10-25` [^3] #### ✅ 方法 3:返回 `datetime` 类型(时间归零) ```sql SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) AS CurrentDate; ``` **说明**: - 计算从基准日(1900-01-01)到当前的天数差 - 将天数差加回基准日实现时间归零 - **输出示例**:`2023-10-25 00:00:00.000` [^2] #### ✅ 方法 4:分别获取年/月/日(返回整数值) ```sql SELECT YEAR(GETDATE()) AS CurrentYear, MONTH(GETDATE()) AS CurrentMonth, DAY(GETDATE()) AS CurrentDay; ``` **输出示例**: | CurrentYear | CurrentMonth | CurrentDay | |-------------|--------------|------------| | 2023 | 10 | 25 | [^3] --- ### 各方法对比 | 方法 | 返回类型 | 适用场景 | 版本要求 | |------|----------------|----------------------------|----------------| | 1 | `VARCHAR(10)` | 需要字符串格式输出 | 所有版本 | | 2 | `DATE` | 后续日期计算 | SQL Server 2008+ | | 3 | `DATETIME` | 兼容旧系统 | 所有版本 | | 4 | `INT` | 需单独使用年/月/日 | 所有版本 | > ⚠️ 注意:避免使用 `DATENAME()` 返回月份名称(如 `October`),除非需要文本月份[^3]。 --- ### 应用示例 ```sql -- 创建只包含日期的临时表 CREATE TABLE #Temp (OrderDate DATE); -- 插入当前日期 INSERT INTO #Temp VALUES (CAST(GETDATE() AS DATE)); -- 查询结果 SELECT * FROM #Temp; -- 输出: 2023-10-25 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Silence-wen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值