SQL如何提取出当前日期的年月信息?

坦白讲,用SQL截取日期的年月信息是很简单的,但是很多人不注意这个细节。
首先使用CONVERT(varchar(7 ), date field, 1 2 0)直接传输。
去年我们推出了电商报表项目,利用该功能截取订单日期字段进行月度统计。
这比使用 DATEPART 快得多。
还有一点,GETDATE()加上CONVERT(varchar(7 ),...,1 2 0)就是实时获取当前的年份和月份。
我记得在上次测试中我发现使用 CURRENT_TIMESTAMP 将不同于 8 小时,具体取决于数据库时区设置。
还有另一个关键细节。
例如,CONVERT(varchar(7 ),GETDATE(),2 3 ) 将带来当天的两位数字。
虽然一般不会使用,但是在设置接口的时候,需要确认对方是想要YYYY-MM还是YYYY-MM-DD。
老实说,这一点很令人困惑。

一开始我觉得DATEPART(年份,日期字段)更直观,后来发现不对。
使用 CONVERT 可以直接控制格式,而无需将月份调整 +1 或 -1 等等,还有一件事。
如果该字段的类型为 DATETIME2 ,则格式 1 2 0 的代码可能会显示年份 00,而应使用 2 3 很多人都没有注意到这一点。

建议直接尝试CONVERT(varchar(7 ),GETDATE(),1 2 0),看看输出是否为YYYY-MM。
如果您觉得有用,请使用 1 2 0。
如果您不习惯,请跳至 2 3 不用担心设置。

数据库中日期只取年月日

Oracle 使用 TO_CHAR 或 TRUNC。
PostgreSQL 使用 CAST 或 CURRENT_TIMESTAMP::date。
MySQL 使用 DATE 函数。
SQL Server 使用 CONVERT(varchar(1 0), GETDATE(), 1 2 0)。
注意数据类型和时区。
该索引可能无效。

sql 如何取日期中的年月

陷阱是不使用 CONVERT 函数直接转换日期字段。

实用提示:使用 DATEPART 函数代替,例如 DATEPART(year, GETDATE()) 返回年份。

sql取时间的年月日部分

这就是坑。
MySQL 使用 DATE_FORMAT。
SQL Server 使用 CONVERT 或 CAST。
不要相信 EXTRACT 或 YEAR/MONTH/DAY 的万能。
用过一次你就明白了。