我试图从MariaDB连接两个表,并将longtext(我认为与字符串相同?)转换为日期。
我已经搜索了一些论坛并阅读了一些MariaDB文档,但是我不是熟练的SQL编码器,因此我可能在某些地方弄错了语法,希望您能提供任何帮助。 / p>
'membership_expiry_date'中的数据不是强制性的-一些条目为NULL,但是如果有日期,则其长文本采用以下格式: 2019/12/31(YYYY / mm / dd)
SELECT u1.`ID` AS 'User ID',
u1.`user_login` AS 'Website ID',
m1.meta_value AS 'Last Name',
m2.meta_value AS 'First Name',
m3.meta_value AS 'Subs Expire',
FROM dbName_users u1
LEFT JOIN dbName_usermeta m1 ON (m1.`user_id` = u1.`ID` AND m1.`meta_key` = 'last_name')
LEFT JOIN dbName_usermeta m2 ON (m2.`user_id` = u1.`ID` AND m2.`meta_key` = 'first_name')
LEFT JOIN dbName_usermeta m3 ON (m3.`user_id` = u1.`ID` AND m3.`meta_key` = STR_TO_DATE('membership_expiry_date', '%Y/%m/%d'))
基本上,我需要将日期作为日期取出,以便以后可以使用它,如果它是字符串,则无法执行。
如果我设法使此(或其他变体)代码运行,那么到目前为止的结果为NULL。
更新 因此,我正在使用wpDataTable WordPress插件中的以下代码,尽管我认为它需要使用'membership_expiry_date'并生成DATE列('Subs_Expire'),但我无法像DATE列那样操作wpDataTables插件中的列。 我知道这一点是因为我添加了“ User_Registered”列,该列包含DATETIME数据,并且在条件格式设置选项中确实具有大于和小于运算符,但“ Subs_Expire”列却没有。
我尝试将CAST()和CONVERT()与各种DATE / TIME选项一起使用,而不是STR_TO_DATE(),但是没有运气。
我已经在TMS网站上发布了一个查询,即wpDataTables的编码器,以查看它们是否可以提供帮助:https://tmsplugins.ticksy.com/ticket/1989889/
SELECT u1.`ID` AS `User ID`,
u1.`user_login` AS `Website_ID`,
u1.`user_registered` AS `User_Registered`,
m1.meta_value AS `Last_Name`,
m2.meta_value AS `First_Name`,
STR_TO_DATE(m3.meta_value, '%Y/%m/%d') as `Subs_Expire`,
FROM dbName_users u1 LEFT JOIN
dbName_usermeta m1
ON m1.`user_id` = u1.`ID` AND
m1.`meta_key` = 'last_name' LEFT JOIN
dbName_usermeta m2
ON m2.`user_id` = u1.`ID` AND
m2.`meta_key` = 'first_name' LEFT JOIN
dbName_usermeta m3
ON m3.`user_id` = u1.`ID` AND
m3.`meta_key` = 'membership_expiry_date';
答案 0 :(得分:0)
您的最后一句话可能是这样。
左联接icxdx_usermeta m3 ON(m3。
user_id
= u1。ID
并且 m3。meta_key
=(选择投放(会员资格到期日期为DATE))
我想这句话必须奏效。但是它可能会为null创建错误。试试看。
答案 1 :(得分:0)
您需要ON
子句中的键和SELECT
中的转换的匹配条件:
SELECT u1.`ID` AS `User ID`,
u1.`user_login` AS `Website ID`,
m1.meta_value AS `Last Name`,
m2.meta_value AS `First Name`,
STR_TO_DATE(m3.meta_value, '%Y/%m/%d')) as `Subs Expire`
FROM dbName_users u1 LEFT JOIN
dbName_usermeta m1
ON m1.`user_id` = u1.`ID` AND
m1.`meta_key` = 'last_name' LEFT JOIN
dbName_usermeta m2
ON m2.`user_id` = u1.`ID` AND
m2.`meta_key` = 'first_name' LEFT JOIN
dbName_usermeta m3
ON m3.`user_id` = u1.`ID` AND
m3.`meta_key` = 'membership_expiry_date';
我认为将列别名包含空格是不好的做法。如果必须,请使用反引号(或双引号)作为分隔符。仅对字符串和日期常量值使用单引号。