SQL选择查询,单个字段为格式化,其余字段为通配符

时间:2011-03-14 15:52:09

标签: mysql sql select date-format

我正在尝试从MySQL 5.5(社区服务器)中的表中获取记录,该表总共有22个字段,第一个字段的类型为DATETIME,我希望该字段格式为{{1}方法,虽然我想按原样获取剩余的字段。所以基本上我要做的就是这样的事情

DATE_FORMAT()

虽然我知道这是无效的语法,目前我正在通过手动选择所有剩余字段来实现这一点,这显然会使查询更长。那么有更优雅的方式来做同样的事情吗?我还想过使用两个不同的查询,其中1st将获取格式化日期,第二个将是常用的

SELECT DATE_FORMAT(fdate,'%r %d-%m-%Y'),* FROM userdetails;

但是由于我获取按日期字段本身排序的记录,我猜使用两个不同的查询可能会导致返回记录顺序的冲突。

5 个答案:

答案 0 :(得分:2)

您可以使用

SELECT  DATE_FORMAT(fdate,'%r %d-%m-%Y'), ud.*
FROM    userdetails ud

将选择所有列(包括原始fdate)以及格式化值。

除了明确列出它们之外,无法选择“几乎所有列”。

答案 1 :(得分:2)

为什么不在应用程序代码中进行日期格式化?让数据库处理数据并让应用程序处理表示。

答案 2 :(得分:1)

在MySQL中,您可以将其反转并将*首先放置,然后放入要指定的列。您只需获得两个fdate列。如果您在PHP中使用perl或关联数组中的哈希,或者在其他语言中使用等效数据,那么为了获取行,您最终会覆盖该索引。

处理它的最佳方法是命名列:

SELECT *, DATE_FORMAT(fdate,'%r %d-%m-%Y') AS formatted_date FROM userdetails;

现在你基本上有两个日期列,当你想使用你的日期时,你只使用了一个日期列。

答案 3 :(得分:0)

DATA_FORMAT(fdate,'%r %d-%m-%Y').....

不会工作

DATE_FORMAT(fdate,'%r %d-%m-%Y')....

答案 4 :(得分:0)

SELECT DATE_FORMAT(fdate,'%r %d-%m-%Y') AS `formattedDate` , * FROM userdetails;

这应该可以解决问题。不能为什么你的第一次努力失败,你应该检查它返回的字段名称 - 怀疑你会找到一个名为DATE_FORMAT(....