- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
pyspark.sql.functions.date_format - 返回一年中最后一天的错误年份
Pyspark版本:版本2.3.0.cloudera3Python版本:Python 2.7.5
当我尝试使用 pyspark 中的函数 date_format 重新格式化一年中的最后一个日期时,当与“YYYY”而不是“yyyy”一起使用时,它会返回下一年。
>>> from pyspark.sql.functions import *
>>> dftest = spark.createDataFrame([('2017-12-31',)], ['dt'])
>>> dftest.select(date_format('dt', 'MM/dd/yyy').alias('date')).collect()
[Row(date=u'12/31/2017')]
>>> dftest.select(date_format('dt', 'MM/dd/yyyy').alias('date')).collect()
[Row(date=u'12/31/2017')]
>>> dftest.select(date_format('dt', 'MM/dd/YYY').alias('date')).collect()
[Row(date=u'12/31/2018')]
>>> dftest.select(date_format('dt', 'MM/dd/YYYY').alias('date')).collect()
[Row(date=u'12/31/2018')]
“YYYY”(大写)与“yyyy”(小写)有何不同?
最佳答案
根据 date_format
的文档:
“可以使用 Java 类 java.text.SimpleDateFormat 的所有模式字母”
如果您查看有关 java 的文档,例如java.text.SimpleDateFormat ,您可以看到大写 Y 指的是星期年,而不是小写 y 本身。
比您的示例中的年份更长:
dftest = spark.createDataFrame([('20{}-12-31'.format(i),) for i in range(19, 25)], ['dt'])
dftest.select('dt', date_format('dt', 'MM/dd/yyyy').alias('date'),
date_format('dt', 'MM/dd/YYYY').alias('DATE'),).show()
+----------+----------+----------+
| dt| date| DATE|
+----------+----------+----------+
|2019-12-31|12/31/2019|12/31/2020|
|2020-12-31|12/31/2020|12/31/2021|
|2021-12-31|12/31/2021|12/31/2022|
|2022-12-31|12/31/2022|12/31/2022| # this one is good for both
|2023-12-31|12/31/2023|12/31/2024|
|2024-12-31|12/31/2024|12/31/2025|
+----------+----------+----------+
您可以看到 2022 年很好,这一年在星期六结束。如果你尝试更多的年份,当它们在星期六结束时你会发现相同的结果。所以我的猜测(不完全确定)是当您使用大写 Y 时,解析将转到下一个星期六并获取与该星期六相关的年份。对于 2019 年,由于今天是星期二,因此会跳转到 2020 年 1 月 4 日星期六,并显示“今年”而不是“2019 年”。
关于python - pyspark date_format 函数返回错误的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56708945/
我在我的数据库中为每个预订使用 unix 时间戳整数存储时间。我遇到了一个问题,我的查询没有正确选择内容,而且似乎休息了一天。 例如,在我的网站上,我有一个日历表,它显示了一个月中的每一天。我使用以下
我在 cakephp 框架中工作, 因为我将日期字符串存储在 varchar 字段中。我需要在需要更改格式之后转换它的时区。这是查询。 SELECT DATE_FORMAT(cast( CONVERT
为什么我的日期比较不起作用, 主要返回所有日期或不返回任何日期 Select DATE_FORMAT(time,'%Y - %m - %d'),'2013 - 01 - 10' FROM signa
我有一张来自 Daloradius 的 table : {CREATE TABLE `radacct` ( `radacctid` bigint(21) NOT NULL AUTO_INCREME
2015 年有 53 周。如果您现在的一周从星期一开始,则为 2016 年 1 月 1 日、2 日和 3 日,也在第 53 周。2016 年 1 月 4 日是第 1 周。 在 MySQL 中,它输出如
我收到了一些时间戳,其格式如下: 2018-02-26T23:59:49Z 我想将此日期插入到日期时间列中。执行以下语句有效 SELECT DATE_FORMAT('2018-02-26T23:59:
我有一个名为“reportinc”的表,我必须在其中提取从 1 或过去几天的 18:01(时间格式为 %H:%i)到今天 18:00 的项目(它是 VARCHAR 字段)。 我尝试过这个查询 SELE
select d.doctorFName,d.doctorLName ,count(ap.appointmentID) totalap, GROUP_CONCAT(DISTINCT s.speci
我正在尝试关注 my_table,其中修改时间的类型为 datetime select DATE_FORMAT(modifiedtime,'%d-%m-%Y') from my_table where
以下 sql 查询的等效 cakephp find 查询是什么? 假设price_date字段类型为日期时间 $sql = "SELECT id,product_id,date_format("%Y-
我有以下输出 2015-05-06 10:30:00 SELECT DATE_FORMAT( NOW( ) , '%Y-%m-%d' ' 10:30:00' ) 我现在想增加日期,以便输出,2015-
2016年的第一周,实际上是2015年的第53周,被mysql转换成2016年的第53周。如何将其转换为实际周,即 2015 年第 53 周? http://www.epochconverter.co
我将 Doctrine2 与 Laravel5 和 MySql 一起使用,并且在 GROUP_CONCAT()、DATE_FORMAT() 方面遇到一些问题。 我通过安装扩展 Beberlei Doc
我相信我是一个熟练的 mysql 用户,但显然我不是。 我以为 mysql 会在比较之前进行转换,但是这个查询让我感到困惑: SELECT DATE_FORMAT('2019-07-19 12:0
我在Mysql中的代码: 从项目中选择 DATE_FORMAT( 创建 , '%Y'); 如何在 CakePHP 中编码? 最佳答案 这里可以使用func()方法。考虑到您将在 Item 模型中编写查
当我尝试使用 DATE_FORMAT(delv_time, '%Y-%m-%d') 它返回 null。 最佳答案 就 MySQL 而言,这还不是日期。这是一个字符串。您需要使用 STR_TO_DATE
我有一个小的 sql 查询,它获取日期时间列的日期部分 Select DATE_FORMAT(`tbldata`.`fldDate`, '%d/%m/%Y') AS formattedDate fro
尝试将时间 ID 和时间本身带回到存储在 mysql 中的列表框中。在 myadmin 中运行 sql 运行良好,在代码中尝试...不太好。带回 undefined index 错误。谢谢。 cal
我试图按日期升序排列日期和时间表,然后按开始时间升序排列,但我的日期列表显示的顺序不正确。不过,开始时间列表似乎确实有效。 顺序应显示为 18/08/2014 然后 19/08/2014 然后 20/
有人可以解释一下 difference between the %h and %I ?两者都被描述为“小时 (01..12)” 并且与秒 %s 和 %S 相同?这背后有什么“奇怪”的功能吗?复制它的原
我是一名优秀的程序员,十分优秀!