sql取时间的年月日部分

说白了,在SQL中提取时间的年月日部分,其实很简单。
先说最重要的,MySQL里用DATE函数就能直接搞定,比如这样:SELECT DATE(your_datetime_column) AS extracted_date FROM your_table; 另外,DATE_FORMAT函数也很实用,可以自定义格式,像这样:SELECT DATE_FORMAT(your_datetime_column, '%Y-%m-%d') AS formatted_date FROM your_table;
我一开始以为DATE和DATE_FORMAT只是MySQL独有,后来发现不对,SQLServer里也有类似功能。
比如,CONVERT函数就能转换日期类型,SELECT CONVERT(date, your_datetime_column) AS extracted_date FROM your_table; 或者用CAST函数,SELECT CAST(your_datetime_column AS date) AS extracted_date FROM your_table;
还有个细节挺关键的,就是通用方法。
比如EXTRACT函数,它能提取特定的日期部分,比如年月日:SELECT EXTRACT(YEAR FROM your_datetime_column) AS year_part, EXTRACT(MONTH FROM your_datetime_column) AS month_part, EXTRACT(DAY FROM your_datetime_column) AS day_part FROM your_table; 或者YEAR、MONTH和DAY函数,也是类似的用法。

这个点很多人没注意,实际应用中,根据所使用的数据库系统和个人偏好选择合适的方法,能让你写SQL的时候更得心应手。
等等,还有个事,提取日期时要注意时区问题,特别是在跨时区处理数据时,这一点很容易被忽视。
我觉得值得试试,看看你的SQL技能能提升多少。

数据库中日期只取年月日

Oracle用TO_CHAR('yyyy-mm-dd')截断日期。

PostgreSQL用hire_date::date直接转日期。

MySQL用DATE(hire_date)去掉时间。

时间戳用TRUNC(SYSTIMESTAMP,'dd')转日期。

索引失效时用hire_date BETWEEN '2 02 5 -01 -01 ' AND '2 02 5 -01 -01 2 3 :5 9 :5 9 '查范围。