MySql 相当于 MS 访问 DatePart
Posted
技术标签:
【中文标题】MySql 相当于 MS 访问 DatePart【英文标题】:MySql equivalent of MS access DatePart 【发布时间】:2019-10-10 16:39:49 【问题描述】:我正在尝试将 MS Access 查询转换为 mysql 查询,但在 SELECT
部分中,我发现了一个 DatePart 函数,该函数从表 tbl_trade 中选择年份。我知道我们在 mysql 中有内置函数,如 YEAR()、EXTRACT() 等,但似乎我不能将它们用作
SELECT YEAR(tbl_trade.create_date) from tbl_trade;
报错
Unknown table 'tbl_trade' in field list
另外我不知道如何在mysql中实现DatePart函数的第3个和第4个参数。 您可以从https://www.techonthenet.com/access/functions/date/datepart.php找到更多关于 DatePart 函数的详细信息
最后,我希望能够实现这个
SELECT DatePart("yyyy", tbl_trade.create_date,1,2) FROM tbl_trade
【问题讨论】:
您的第一个查询应该可以工作。 dbfiddle什么版本的MySQL? 【参考方案1】:最接近的等价物是extract
。需要各种intervals。
select create_date, extract(year from create_date)
from tbl_trade;
+---------------------+--------------------------------+
| create_date | extract(year from create_date) |
+---------------------+--------------------------------+
| 2019-01-02 00:00:00 | 2019 |
| 2019-01-02 00:00:00 | 2019 |
+---------------------+--------------------------------+
至于更改星期和年份的定义,可以通过various modes to week
。
-- Mode 7: Week starts on Monday. Week 1 is the first with a Monday.
select create_date, week(create_date, 7) from tbl_trade;
+---------------------+----------------------+
| create_date | week(create_date, 7) |
+---------------------+----------------------+
| 2019-01-02 00:00:00 | 53 |
| 2019-01-02 00:00:00 | 53 |
+---------------------+----------------------+
或者通过设置default_week_format
来影响所有日期函数。
set default_week_format = 7;
select create_date, extract(week from create_date) from tbl_trade;
+---------------------+--------------------------------+
| create_date | extract(week from create_date) |
+---------------------+--------------------------------+
| 2019-01-02 00:00:00 | 53 |
| 2019-01-02 00:00:00 | 53 |
+---------------------+--------------------------------+
对于精细控制,有date_format
。
-- %v is mode 3. First DOW is Monday. First week is has 4 days or more.
select create_date, date_format(create_date, '%W week %v') from tbl_trade;
+---------------------+----------------------------------------+
| create_date | date_format(create_date, '%W week %v') |
+---------------------+----------------------------------------+
| 2019-01-02 00:00:00 | Wednesday week 01 |
| 2019-01-02 00:00:00 | Wednesday week 01 |
+---------------------+----------------------------------------+
【讨论】:
以上是关于MySql 相当于 MS 访问 DatePart的主要内容,如果未能解决你的问题,请参考以下文章