SQL中如何从数据库datetime字段提取日期的日部分
提取日期中的日部分
根据你使用的数据库类型,可通过以下方式实现:
MySQL/MariaDB
- 若
SENT_TIME是日期类型,直接用DAY()函数提取:
SELECT DAY(SENT_TIME) AS DAY_PART FROM APP_STATUS_WEBSERVICE WHERE APP_ID_EFAS = 809371;
- 若
SENT_TIME是字符串类型(如存储为'2022年10月22日'),用字符串截取:
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SENT_TIME, '月', -1), '日', 1) AS DAY_PART FROM APP_STATUS_WEBSERVICE WHERE APP_ID_EFAS = 809371;
Oracle
- 日期类型用
EXTRACT()函数:
SELECT EXTRACT(DAY FROM SENT_TIME) AS DAY_PART FROM APP_STATUS_WEBSERVICE WHERE APP_ID_EFAS = 809371;
- 字符串类型用
SUBSTR结合INSTR定位截取:
SELECT SUBSTR(SENT_TIME, INSTR(SENT_TIME, '月') + 1, INSTR(SENT_TIME, '日') - INSTR(SENT_TIME, '月') - 1) AS DAY_PART FROM APP_STATUS_WEBSERVICE WHERE APP_ID_EFAS = 809371;
SQL Server
- 日期类型用
DAY()或DATEPART():
SELECT DAY(SENT_TIME) AS DAY_PART -- 或 DATEPART(DAY, SENT_TIME) AS DAY_PART FROM APP_STATUS_WEBSERVICE WHERE APP_ID_EFAS = 809371;
- 字符串类型用
SUBSTRING和CHARINDEX:
SELECT SUBSTRING(SENT_TIME, CHARINDEX('月', SENT_TIME) + 1, CHARINDEX('日', SENT_TIME) - CHARINDEX('月', SENT_TIME) - 1) AS DAY_PART FROM APP_STATUS_WEBSERVICE WHERE APP_ID_EFAS = 809371;
内容的提问来源于stack exchange,提问作者Babo
相关产品推荐
相关产品推荐

