Joh*_*y B 6 mysql sql mysql-workbench
我有一行SQL服务器代码,其日期列为"YYYYMMDD",其中DD为00,并将00转换为01,以便它与datetime一起使用.我希望能够使用MySQL
适用于SQL Server的当前代码:
INSERT patentdb.Citation(PatentNo, Citation, CitedBy, CitationDate)
SELECT PatentNo, citation, WhoCitedThis, dt
FROM
(
SELECT PatentNo, Citation, WhoCitedThis, dt = CASE
WHEN CitationDate LIKE '%00' THEN INSERT (CitationDate, 8, 1, '1')
ELSE CitationDate
END
FROM patentdb.CitationSource
) AS x
WHERE ISDATE(dt) = 1;
Run Code Online (Sandbox Code Playgroud)
但isdate在MySQL中无效,我该怎么做才能解决这个问题?
您可以尝试使用STR_TO_DATE函数.null如果表达式不是日期,时间或日期时间,则返回.
WHERE STR_TO_DATE(dt, '%d,%m,%Y') IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
一种可能性,允许参数为字符串,整数或日期:
WHERE DAYNAME(dt) IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
这些有效日期返回'星期二':
SELECT IFNULL(DAYNAME('2016-06-21 18:17:47') , '');
SELECT IFNULL(DAYNAME('2016-06-21') , '');
Run Code Online (Sandbox Code Playgroud)
这些无效日期返回''(空字符串):
SELECT IFNULL(DAYNAME('0000-00-00 00:00:00') , '');
SELECT IFNULL(DAYNAME('2016-06-32 18:17:47') , '');
SELECT IFNULL(DAYNAME(NULL) , '');
SELECT IFNULL(DAYNAME(10) , '');
Run Code Online (Sandbox Code Playgroud)
似乎DAYNAME在mysql 5.6中比STR_TO_DATE快2倍:
SELECT benchmark(10000000, DAYNAME('2016-06-21 18:17:47'))
1 row(s) returned 3.215 sec / 0.0000072 sec
SELECT benchmark(10000000, STR_TO_DATE('2016-06-21 18:17:47', '%d,%m,%Y'))
1 row(s) returned 7.905 sec / 0.0000081 sec
Run Code Online (Sandbox Code Playgroud)
我想如果参数是date(而不是eg.字符串),那么性能会更好.
| 归档时间: |
|
| 查看次数: |
22494 次 |
| 最近记录: |