[英]How to get the DATE format from Weekday name?
在工作日
Sunday=1
Monday=2
Tuesday=3
Wednesday=4
Thursday=5
Friday=6
Saturday=7
我有当前字符串
Saturdays at 13:35 PDT
我想INSERT
成一个DATETIME
列有它的日期和时间仅是这样的:
DATETIME
0000-01-01 13:35:00 //Sundays at 13:35 PDT
0000-01-02 13:35:00 //Mondays at 13:35 PDT
0000-01-03 13:35:00 //Tuesdays at 13:35 PDT
0000-01-04 13:35:00 //Wednesdays at 13:35 PDT
0000-01-05 13:35:00 //Thursdays at 13:35 PDT
0000-01-06 13:35:00 //Fridays at 13:35 PDT
0000-01-07 13:35:00 //Saturdays at 13:35 PDT
我考虑过使用以下内容
INSERT into TABLE(column) VALUES (STR_TO_DATE('Saturdays at 13:35', '%Ws at %H:%i'))
但是它总是给我NULL
值,而且我想将时区从PDT更改为UTC ,但是我不知道如何使用STR_TO_DATE()
函数
在工作日使用CASE
可能对此有所帮助。
然后CONCAT
的时间吧。
范例:
SELECT
CONCAT(
case SUBSTRING(weekday_at_time, 1, LOCATE(' ',weekday_at_time)-1)
when 'Sundays' then '0000-01-01 '
when 'Mondays' then '0000-01-02 '
when 'Tuesdays' then '0000-01-03 '
when 'Wednesdays' then '0000-01-04 '
when 'Thursdays' then '0000-01-05 '
when 'Fridays' then '0000-01-06 '
when 'Saturdays' then '0000-01-07 '
end,
STR_TO_DATE(SUBSTRING(weekday_at_time,length(weekday_at_time)-4,5),'%H:%i')
) AS "DATETIME"
FROM (
-- Sample data
select 'Sundays at 14:45' as weekday_at_time
union all select 'Saturdays at 13:35'
) AS Samples
在这里测试SQL小提琴
但这是假设您将其更新为VARCHAR列。
因为将“ 0000”年的datetimestamp强制转换为datetime可以得出不同的结果。
例如:
select cast('0000-01-01 13:35:00' as datetime) as dt
返回:
-0001-12-30T13:35:00Z
如果要更新为DATETIME,则将年份更改为“ 1900”可能更安全。
在这里测试SQL小提琴
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.